0
0 Комментариев

Делаяю различные математические вычисления наткнулся на интересный факт в питоне.

print (round(2.5))
>>> 2
print (round(1.5))
>>> 2
print (round(0.5))
>>> 0

Почему значение 1.5 округляется вверх, когда остальные два округляются вниз? Тестировал на других числах. Вывел что числа в (примерном) диапазоне:

[1.499999999999999889, 2.50000000000000022202]

округляются до 2.
При этом диапазон округлениея к 1 (примерно) равен:

[0.500000000000000055511151231257827025, 1.4999999999999998889]

Диапазон 2 «значительно» (если это можно сказать про такие мелкие доли) больше 1.

Для моих вычисление это не критично, но я всегда считал, что компьютер строго округляет половину в какую либо одну сторону. Какова философия за этим явлением?

Перелом нулей и девяток случается на 16 бите, т.е. это видимо как-то связано с величиной экспонета double и невозможнотью определять более точные числа, это я могу понять.

Но почему round(2.5) и round(1.5) равны 2 — недочет разработчиков?


Добавить комментарий