问题描述:
基本上,我将float转换为int,但我并不总是有预期的值。
这是我正在执行的代码:
x = 2.51
print("--------- 251.0")y = 251.0print(y)print(int(y))print("--------- 2.51 * 100")y = x * 100print(y)print(int(y))print("--------- 2.51 * 1000 / 10")y = x * 1000 / 10print(y)print(int(y))print("--------- 2.51 * 100 * 10 / 10")y = x * 100 * 10 / 10print(y)print(int(y))x = 4.02print("--------- 402.0")y = 402.0print(y)print(int(y))print("--------- 4.02 * 100")y = x * 100print(y)print(int(y))print("--------- 4.02 * 1000 / 10")y = x * 1000 / 10print(y)print(int(y))print("--------- 4.02 * 100 * 10 / 10")y = x * 100 * 10 / 10print(y)print(int(y))
这是结果(第一个值是操作的结果,第二个值是相同操作的int()):
--------- 251.0251.0 251--------- 2.51 * 100251.0 250--------- 2.51 * 1000 / 10251.0 251--------- 2.51 * 100 * 10 / 10251.0 250--------- 402.0402.0 402--------- 4.02 * 100402.0 401--------- 4.02 * 1000 / 10402.0 401--------- 4.02 * 100 * 10 / 10402.0 401
2.51和4.02是导致2.50 - > 5.00范围内的奇怪行为的唯一值。当给定相同的操作时,该范围中的每隔两位数值转换为int而没有任何问题。
那么,我错过了什么导致了这些结果呢?顺便说一句,我正在使用Python 2.7.2。
解决方法:
2.51 * 100 = 250.999999999997
int()
函数只是截断小数点的数字,给出250.使用
int(round(2.51*100))
得到251作为整数。通常,无法准确表示浮点数。因此,应该注意舍入误差。如上所述,这不是特定于Python的问题。这是所有计算机语言中反复出现的问题。
未经允许不得转载:编程自学网 » Python浮动到int转换