编程自学网编程自学网编程自学网

Python浮动到int转换

问题描述:

基本上,我将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转换