В принципе, я конвертирую float в int, но у меня не всегда есть ожидаемое значение.
Здесь код, который я выполняю:
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.