我可以禁用 DecimalFormat 中的舍入“功能”吗?
例如:
DecimalFormat f = new DecimalFormat();
f.parseObject("123456789012345.99");
结果是 1.2345678901234598E14
Java 版本“1.6.0_21”
最佳答案
这与 Java 的特性无关。这是由于 IEEE 64 位双 float 的精度有限。事实上,所有数据类型的精度都有限制。有些比其他的大。
double d = 123456789012345.99;
System.out.println(d);
打印
1.2345678901234598E14
如果您想要更高的精度,请使用 BigDecimal。
BigDecimal bd = new BigDecimal("123456789012345.99");
System.out.println(bd);
打印
123456789012345.99
即使 BigDecimal 也有限制,但它们远远超出您或几乎任何其他人所需要的。 (约 20 亿位)
编辑:已知最大的素数适合 BigDecimal http://primes.utm.edu/largest.html
关于 java 。如何禁用 DecimalFormat 中的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4920043/