【发布时间】:2019-02-28 20:20:26
【问题描述】:
我正在尝试专门使用这个值
new BigDecimal("23.025").setScale(2, RoundingMode.HALF_EVEN);
输出是 23.02,但应该是 23.03。是bug吗?
只是为了好奇DecimalFormat("#####0,00");也不起作用
还有什么建议吗?
【问题讨论】:
-
为什么你认为应该是
23.03?最后一位是3,不是偶数。您认为HALF_EVEN中的EVEN部分是什么意思,您为什么这么认为? -
当我遇到类似的问题时,我总是假设这个错误在我的理解中,而不是在 Java 本身中,而且我在 99.99% 的情况下都是对的。我敢打赌,你的赔率是相似的。
-
@LeonardoSilva 它还应该返回什么?
23.03?这不是一个偶数。你知道 even 是什么意思,对吧? 奇数的反义词。 3 是奇数,4 是偶数。 -
也许您应该阅读文档,即
RoundingMode的javadoc,其中记录了所有这些内容,并附有显示四舍五入如何工作的漂亮表格。
标签: java rounding bigdecimal