可能重复:
Java floating point math - (conversion for feet/meters)
Java floating point arithmetic
我在java中遇到了以下问题。
此计算(0.196f * 100
)产生19.599999487400055
而不是19.6
。
我很困惑。任何人都可以告诉我为什么我会得到这个奇怪的结果,以及如何确保我得到正确的结果,而不必污染我的代码与遍布整个地方。
还有什么其他jvm语言更好地处理这些问题?例如scala会有什么不同吗?
答案 0 :(得分:1)
查看此链接或谷歌主题。阅读第一章“章节”,你就会明白。 {{3P>
答案 1 :(得分:0)
正如评论已经说明的那样,浮点数始终存在不准确性。 double
受到的影响较小,但仍然受此影响,所以你必须处理它们。
如果您想要精确计算,请使用BigDecimal
,但您无法使用运算符。