比较2精度浮点和4精度十进制的正确方法

时间:2017-10-26 23:29:22

标签: python

我遇到了一个与将float与Decimal进行比较相关的有趣问题:

./app.scss
Module parse failed: Unexpected character '@' (1:0)
You may need an appropriate loader to handle this file type.

BUT

>>> Decimal('1000.1000') == Decimal('1000.10')
True

2精度浮球从第3方来到我这里,所以我不能手动设置它的精度。这里的解决方案是从float转换 - > str - >像这样的小数?

>>> Decimal('1000.1000') == Decimal(1000.10)
False

这很笨拙。是否有规范的方法来进行这种比较?

1 个答案:

答案 0 :(得分:0)

1000.10已经失去了精确度。根本没办法让它回来。如果你已经知道你需要多精确,你可以str然后截断/舍入它。

如果可能,请尽量将其保留为字符串或Decimal对象,因为一旦它成为浮点数,您就已经失去了精度。