java 。如何禁用 DecimalFormat 中的舍入

标签 java rounding decimalformat

我可以禁用 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/

相关文章:

java - 在java中创建实例时为成员变量赋值

java - 了解 java 编译器源标志和目标标志

java - Proguard 混淆包不包括扩展/实现某些接口(interface)/类的类

assembly - x87 可以对 UNsigned QUADword 整数执行精确除法吗?

python - Python 中的 float 舍入

java - 十进制格式舍入模式产生不一致的值

java - 数独解算器回溯

mysql - 数据库级别的 Rails 舍入 float

android - 在 Kotlin 中使用十进制格式格式化数字

java - 在 Java 中使用 DecimalFormat 进行舍入