Pig*_*gna 3 python floating-point module
我不明白为什么%的工作原理如下:
>>> 5 % 0.5 == 0
True
>>> 5 % 0.25 == 0
True
>>> 5 % 0.2 == 0
False
>>> 5 % 0.1 == 0
False
Run Code Online (Sandbox Code Playgroud)
谁可以给我解释一下这个?我需要检查用户输入是否划分了一系列数字.只有当所有数字都可以被用户输入整除时,程序才接受输入,否则它会询问用户另一个数字.
注意:
0.5 是 2**-10.25 是 2**-20.625是2**-1 + 2**-3
等等.因此,只要你有一个完美的可表示的浮点数,分割/模运算很有可能顺利进行.
但是,当您尝试将(或取模)除以0.1或0.2时,其浮点表示中始终存在舍入误差,这意味着除法将不完整,因此结果将不为True.
您可以使用Decimal module更正确的操作.另外,要经历浮点数的常规陷阱.
>>> 1000 % 0.25 == 0
True
>>> 1000 % 0.625 == 0
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |