Qui est le meilleur moyen de comparer un BigDecimal et un int en Java : coverting la BigDecimal int, ou la conversion de int à BigDecimal ?
Si vous convertissez le BigDecimal int, vous êtes responsable de dépasser sa gamme.
OriginalL'auteur HighBit | 2012-03-18
Si vous pensez que le
BigDecimal
de la valeur à être très grande (c'est à dire en dehors de la plage deint
valeurs, qui est de -231 231-1) et/ou à contenir des chiffres après la virgule, ou tout simplement envie de jouer en toute sécurité, vous devez convertir lesint
àBigDecimal
pour éviter le débordement /les erreurs de troncature.Autrement, si la performance est vraiment un gros problème (ce qui est rare), il pourrait être mieux dans l'autre sens.
OriginalL'auteur Péter Török
Vous souhaitez convertir le
int
à unBigDecimal
.C'est parce que vous ne serez pas toujours être en mesure de convertir un BigDecimal int; vous perdrez toutes les informations après le point décimal et la valeur de la BigDecimal peut-être en dehors de la plage d'un int.
OriginalL'auteur Taymon
Comme
BigDecimal
étend la gamme deint
vous faudra convertir leint
enBigDecimal
pour être sûr qu'ils peuvent être comparés, de toute façon.OriginalL'auteur Sirko
Une raison de ne pas convertir en int pour BigDecimal est le fait que vous pourriez être la création d'un nouvel objet, par conséquent, vous êtes vraiment jeter des ordures sur votre segment de mémoire pour exécuter l'égalité.
Aussi, l'égalité primitive serait plus rapide que celui sur le réel BigInteger objet.
mais c'est peut-couse un débordement et le résultat peut être erroné. Si BigDecimal bd = exemple maxint +1 et bd sont convertis en int le résultat sera 1
Bien sûr, cela dépend de l'usage réel de Cas. @Oli à chaque fois pour la comparaison le cas où vous souhaitez créer un nouveau BigInteger objet, qui pourrait ne pas être nécessaire et qui réside sur le tas, au lieu de prendre la réelle valeur primitive est déjà stocké dans le type BigInt objet lui-même
OriginalL'auteur Bober02