Je veux arrondir à deux chiffres après la virgule si naturellement j'utiliser:Math.round trouble
Double number = Math.round(number*100.0)/100.0
Mais je fini par obtenir des sorties très long, avec beaucoup de chiffres après la virgule. J'ai donc essayé différentes entrées pour Math.round() semblables à ceux que je dois utiliser et a constaté que
Math.round(8.3391700279483738E17) = 833917002794837376
Math.round(8.3391700279483738E17 * 100)/100.0 = 9.223372036854776E16
-t-il un sens à tout le monde?
La technique entière est invalide. Les valeurs à virgule flottante n'ont pas de décimales. Ils ont des emplacements binaires, qui sont incommensurables avec des décimales, de sorte que vous ne pouvez pas les arrondir à un nombre spécifique de décimales. Voir [ici] (http://stackoverflow.com/a/12684082/207421) pour preuve. – EJP