Python преобразование float в int

По сути, я конвертирую float в int, но у меня не всегда есть ожидаемое значение.

Вот код I ' m выполняется:

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.

63
задан Aaron Hall 31 May 2014 в 14:05
поделиться