我要把一个浮点数转换成整数,但我得到的值有时候不是我期望的。
这是我执行的代码:
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.50->5.00范围内,只有2.51和4.02是导致这种奇怪行为的值。当给定相同操作时,该范围内的其他两位数字值都可以无问题地转换为整数。
那么,我错过了什么导致了这些结果呢?顺便说一下,我正在使用Python 2.7.2。
nfloor = lambda x: round(x * 10**8) // 10**8
。 - warownia1