在600行长码中,我有一部分代码计算奇怪的东西。Python计算:浮点数和整数
idl = 0
print type(dl), dl
idl = int(dl*10)+1
print idl
这将返回:
<type 'float'> 0.1
1
该计算是在我的代码定义完成。 这显然不是预期的结果。奇怪的是,当我在一个单独的Python文件中的代码复制以上:
idl = 0
dl = 0.1
print type(dl), dl
idl = int(dl*10)+1
print idl
我得到:
<type 'float'> 0.1
2
可能是什么这个问题的根源?我已经提取了这些部分,使问题变得简单,但如果您想要,我可以提供更多信息。
铸造到int不会绕过你的数字,而是截断它。正因为如此,你可以得到0.999999而不是1,所以当投射到int时它会给出0。我不确定为什么结果会在不同的地方有所不同,尽管...... – sashkello
也许'dl'的值不像第一种情况那样接近.1,但是Python只打印它以限制精确。我建议你以更精确的方式打印它(我不熟悉Python语法),或者打印'dl-.1'来查看其差异。正如sashkello所指出的那样,如果'dl'略小于'.1',那么'dl * 10'略小于1,转换为'int'会将其截断为零。 –