/ telegram

В чем хранить деньги?

Увидел вопрос на quora и прям по-больному https://www.quora.com/In-Python-why-does-8-5-8-4-give-0-099999999999999964 Затрудняюсь сосчитать сколько раз на собеседованиях я слышал, что кандидат собирается использовать double для хранения денежных величин. Правда некоторые подходят сознательно к этому вопросу и уверенно говорят, что float плохой выбор, у него с точностью не всё в порядке, а вот с double точно будет всё хорошо. Эм... и я не шучу.

Я уверен вы знаете, как устроено хранение чисел с плавающей точкой. Но если встретите начинающего программиста и он не знает, приведите ему простые примеры:

0.3*3=0.8999999999999999

0.1*3=0.30000000000000004

Справедливо для любого языка реализующего вещественные числа по стандарту IEEE 754 (https://ru.wikipedia.org/wiki/IEEE_754-2008)
почему так происходит? Если кратко, то 0.1 и 0.3 периодичные числа в двоичном представлении, ввиду особенности хранения мы теряем точность.

А подробнее можно прочитать например здесь https://habr.com/post/112953/

Читать в телеграм: https://t.me/tj4me/81

В чем хранить деньги?
Share this

Subscribe to Yet another blog