Я хочу, чтобы округлить до двух знаков после запятой поэтому, естественно, я хотел бы использовать:Math.round неприятность
Double number = Math.round(number*100.0)/100.0
Но я в конечном итоге получить очень длинные выходные, с большим количеством знаков после запятой. Так что я пробовал разные входы для Math.round() похож на те, которые я должен использовать и обнаружил, что
Math.round(8.3391700279483738E17) = 833917002794837376
Math.round(8.3391700279483738E17 * 100)/100.0 = 9.223372036854776E16
ли это имеет смысл для кого?
Вся техника недействительна. Значения с плавающей запятой не имеют десятичных знаков. У них есть бинарные места, которые несоизмеримы с десятичными знаками, поэтому вы не можете округлить их до определенного числа десятичных знаков. См. [Здесь] (http://stackoverflow.com/a/12684082/207421) для доказательства. – EJP