История изменений
Исправление dva20, (текущая версия) :
короче когда точность теряется, такие вот цепочки вычислений надо делать как можно короче
Да, но мне казалось, что 0,56 (короткое же?) можно легко преобразовать в 5,6 умножением на 10. Но оказалось без округления это невозможно, так как когда я ввожу 0,56 «ручками», где-то глубоко в системе оно записалось как 0,559999999999985.
А в итоге вон что оказалось:
>>> a = 0.56
>>> a
0.56
>>> a == 0.56
True
>>> a * 10 / 10
0.56
>>> a * 10
5.6000000000000005
>>>
Умножение и деление возвращает число в изначально введённое, а если просто умножение, то уже идёт «искажение» исходного числа.
Так тут, в Пайтоне число становится 5.6000000000000005, а в C++ совсем другое, меньше 5,6.
Исправление dva20, :
короче когда точность теряется, такие вот цепочки вычислений надо делать как можно короче
Да, но мне казалось, что 0,56 (короткое же?) можно легко преобразовать в 5,6 умножением на 10. Но оказалось без округления это невозможно, так как когда я ввожу 0,56 «ручками», где-то глубоко в системе оно записалось как 0,559999999999985.
А в итоге вон что оказалось:
>>> a = 0.56
>>> a
0.56
>>> a == 0.56
True
>>> a * 10 / 10
0.56
>>> a * 10
5.6000000000000005
>>>
Умножение и деление возвращает число в изначально введённое, а если просто умножение, то уже идёт «искажение» исходного числа
Исходная версия dva20, :
короче когда точность теряется, такие вот цепочки вычислений надо делать как можно короче
Да, но мне казалось, что 0,56 (короткое же?) можно легко преобразовать в 5,6 умножением на 10. Но оказалось без округления это невозможно, так как когда я ввожу 0,56 «ручками», где-то глубоко в системе оно записалось как 0,559999999999985.
А в итоге во чё оказалось
>>> a = 0.56
>>> a
0.56
>>> a == 0.56
True
>>> a * 10 / 10
0.56
>>> a * 10
5.6000000000000005
>>>
Умножение и деление возвращает число в изначально введённое, а если просто умножение, то уже идёт «искажение» исходного числа