java - DecimalFormat 未根据 Half_Even 舍入给出结果

标签 java decimalformat

我正在尝试四舍五入到小数点后一位。下面是代码片段。

DecimalFormat decimalFormat = new DecimalFormat("#0.#");
String formattedNumber = decimalFormat.format(4.65d);
System.out.println(formattedNumber);

输出
4.7

根据 DecimalFormat javadoc,其默认舍入为 HALF_EVEN。根据这条规则,4.65 应该四舍五入为 4.6。但是,它给出的输出为 4.7。请帮助我理解这种行为。

最佳答案

对于许多十进制值,double 有一个小的表示错误,这包括 4.65,它实际上比它看起来略高。

System.out.println(new BigDecimal(4.65));

打印

4.6500000000000003552713678800500929355621337890625

关于java - DecimalFormat 未根据 Half_Even 舍入给出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40718154/

相关文章:

java - 有没有更好的方法来做到这一点?(如果输入是 1 和 1000000 永远这样做)

java - 为什么我的对象在创建时遇到问题?

java - 使用 DecimalFormat 的问题

java - 你能在 Java 中获取变量的先前值吗?

java - 如何在 Eclipse/IntelliJ 中正确设置 Maven 项目

java - 根据从 map 获得的优先级对 ArrayList 进行排序(Java 版本 < Java8)

Java Math RoundingMode.HALF_EVEN 不同的结果

java - java检查用户输入数字的格式

java - 强制 decimalformat 以英语而非阿拉伯语格式化数字

Java DecimalFormat 向下舍入