double d = 5000000000000000000034534534d;
System.out.println(String.valueOf(d)); // prints 5.0E27
现在,我希望显示完整的数字而不是科学记数法。
作为一个修复,我添加了新的Bigdecimal,它可以正常工作,直到10-12位不是大数字。
System.out.println(new BigDecimal(d).toString()) // prints 4999999999999999791559868416
与double值不同。需要一个解决方案来打印正确的数字,直到25位数。
答案 0 :(得分:1)
您的double值包含太多有效数字,并且无法存储为double。
您需要使用BigDecimal。
请查看有关原因Why should we use BigDecimal instead of Double in the real world?
的SO答案