基本上,我将浮点数转换为整数,但我并不总是有预期值。
这是我正在执行的代码:
x = 2.51
print("--------- 251.0")
y = 251.0
print(y)
print(int(y))
print("--------- 2.51 * 100")
y = x * 100
print(y)
print(int(y))
print("--------- 2.51 * 1000 / 10")
y = x * 1000 / 10
print(y)
print(int(y))
print("--------- 2.51 * 100 * 10 / 10")
y = x * 100 * 10 / 10
print(y)
print(int(y))
x = 4.02
print("--------- 402.0")
y = 402.0
print(y)
print(int(y))
print("--------- 4.02 * 100")
y = x * 100
print(y)
print(int(y))
print("--------- 4.02 * 1000 / 10")
y = x * 1000 / 10
print(y)
print(int(y))
print("--------- 4.02 * 100 * 10 / 10")
y = x * 100 * 10 / 10
print(y)
print(int(y))
这是结果(第一个值是操作的结果,第二个值是相同操作的 int()):
--------- 251.0
251.0
251
--------- 2.51 * 100
251.0
250
--------- 2.51 * 1000 / 10
251.0
251
--------- 2.51 * 100 * 10 / 10
251.0
250
--------- 402.0
402.0
402
--------- 4.02 * 100
402.0
401
--------- 4.02 * 1000 / 10
402.0
401
--------- 4.02 * 100 * 10 / 10
402.0
401
2.51 和 4.02 是导致 2.50 -> 5.00 范围内奇怪行为的唯一值。当给定相同的操作时,该范围内的每隔两个数字值转换为 int 没有任何问题。
那么,我错过了什么导致这些结果?顺便说一句,我正在使用 Python 2.7.2。
原文由 B. Richard 发布,翻译遵循 CC BY-SA 4.0 许可协议
int()
函数只是截断小数点后的数字,得到 250。使用得到 251 作为整数。通常,浮点数不能精确表示。因此,应注意舍入误差。如前所述,这不是特定于 Python 的问题。这是所有计算机语言中反复出现的问题。