Tag: 十字

为什么BigDecimal返回一个奇怪的值?

我正在编写处理货币,收费等的代码。我将使用BigDecimal类进行数学和存储,但我们遇到了一些奇怪的东西。 这个说法: 1876.8 == BigDecimal(‘1876.8’) 返回false。 如果我通过格式化字符串”%.13f”运行这些值,我得到: “%.20f” % 1876.8 => 1876.8000000000000 “%.20f” % BigDecimal(‘1876.8’) => 1876.8000000000002 请注意最后一个小数位的BigDecimal中的额外2 。 我认为BigDecimal应该能够抵消直接在计算机的本机浮点存储实数的不准确性。 这2来自哪里?