Python 如何避免模数浮点错误?
我使用了模运算符,得到了一些浮点错误。比如说,Python 如何避免模数浮点错误?,python,python-2.7,modulus,Python,Python 2.7,Modulus,我使用了模运算符,得到了一些浮点错误。比如说, >>> 7.2%3 1.2000000000000002 使用round功能是否是我处理此问题的唯一途径?例如 >>> round(7.2%3, 1) 1.2 我事先不知道需要舍入的位数,所以我想知道是否有更好的解决方案?如果您想要任意精度,请使用十进制模块: >>> import decimal >>> decimal.Decimal('7.2') % decimal.D
>>> 7.2%3
1.2000000000000002
使用round
功能是否是我处理此问题的唯一途径?例如
>>> round(7.2%3, 1)
1.2
我事先不知道需要舍入的位数,所以我想知道是否有更好的解决方案?如果您想要任意精度,请使用
十进制模块:
>>> import decimal
>>> decimal.Decimal('7.2') % decimal.Decimal('3')
Decimal('1.2')
求你了
注意,我使用了str
作为Decimal
的参数。看看如果我不这样做会发生什么:
>>> decimal.Decimal(7.2) % decimal.Decimal(3)
Decimal('1.200000000000000177635683940')
>>>
如果需要任意精度,请使用十进制
模块:
>>> import decimal
>>> decimal.Decimal('7.2') % decimal.Decimal('3')
Decimal('1.2')
求你了
注意,我使用了str
作为Decimal
的参数。看看如果我不这样做会发生什么:
>>> decimal.Decimal(7.2) % decimal.Decimal(3)
Decimal('1.200000000000000177635683940')
>>>
考虑使用<代码>十进制。十进制< /代码>。浮点数不表示精确值。您在编写7.2
时,就在程序中引入了不精确性。如果你的程序不能承受万亿分之一的错误,你需要使用十进制或有理数数据类型。我想这里已经回答了这个问题。因为数学很奇怪。考虑使用<代码>十进制。十进制< /代码>。浮点数不表示精确值。您在编写7.2
时,就在程序中引入了不精确性。如果你的程序不能承受万亿分之一的错误,你需要使用十进制或有理数数据类型。我想这里已经回答了这个问题。因为数学很奇怪。因此,在将数字传递到十进制之前,我需要确保我将它们输入到str()
。知道了。谢谢@wogsland I会小心使用str
,它会自动进行舍入,但浮点错误会潜入舍入。在可能的情况下使用字符串文字。因此,在将数字传递到十进制之前,我需要确保我str()。知道了。谢谢@wogsland I会小心使用str
,它会自动进行舍入,但浮点错误会潜入舍入。尽可能使用字符串文字。