J'essaye de comprendre l'échelle pour un BigDecimal mais il agit bizarrement et je ne peux pas comprendre pourquoi. Voici quelques exemples:Échelle BigDecimal pour les grands nombres
Double d = new Double(1000000d);
int scale = new BigDecimal(d.toString()).scale();
L'échelle de cet exemple sera 1, ce qui est correct pour moi. Le résultat de d.toString() est "1000000.0".
Double d = new Double(10000000d);
int scale = new BigDecimal(d.toString)).scale();
L'échelle de cet exemple sera -6. Quelqu'un peut-il expliquer pourquoi? Le résultat de d.toString() est "1.0E7".
Je pensais que le nombre de chiffres a causé cela, mais si je vais:
Double d = new Double(11111111d);
int scale = new BigDecimal(d.toString()).scale();
une échelle de escomptés -8 mais tout à coup, il est 0. Le résultat de d.toString() est « 1.1111111E7 ».
Ces différentes échelles pour me faire aucun sens après avoir lu la Javadoc d'échelle():
Renvoie l'échelle de ce BigDecimal. Si zéro ou positif, l'échelle est le nombre de chiffres à la droite de la virgule décimale. Si négatif, la valeur non scalée du nombre est multipliée par dix à la puissance de la négation de l'échelle. Par exemple, une échelle de -3 signifie que la valeur non mise à l'échelle est multipliée par 1000.
J'apprécierais beaucoup l'explication du comportement de BigDecimal lorsque les nombres sont grands.
Merci d'avance!
Vérifiez la valeur de 'd.toString()' avant de le passer à 'new BigDecimal'. Il pourrait ne pas avoir la valeur que vous pensez avoir. – marstran
Ajout des résultats de d.toString() pour les exemples et cela ne m'aide pas beaucoup. –