Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何避免模数浮点错误?_Python_Python 2.7_Modulus - Fatal编程技术网

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
,它会自动进行舍入,但浮点错误会潜入舍入。尽可能使用字符串文字。