0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Небольшая зарисовка по поводу того, почему при сложении чисел 0.1 и 0.2 получается 0.30000000000000004 и что с этим можно сделать.</strong></p>
1
<p><strong>Небольшая зарисовка по поводу того, почему при сложении чисел 0.1 и 0.2 получается 0.30000000000000004 и что с этим можно сделать.</strong></p>
2
<p>Делал для себя маленький скрипт, суть которого (кратко) заключается в том, что если ввести в поле ввода какое-либо число и щёлкнуть по кнопке, находящейся вместе с данным полем в одной форме, то в отдельном блоке чуть ниже form выводится сумма введенного в поле ввода числа и того числа, которое уже было в нижележащем блоке (назовём его div-output).</p>
2
<p>Делал для себя маленький скрипт, суть которого (кратко) заключается в том, что если ввести в поле ввода какое-либо число и щёлкнуть по кнопке, находящейся вместе с данным полем в одной форме, то в отдельном блоке чуть ниже form выводится сумма введенного в поле ввода числа и того числа, которое уже было в нижележащем блоке (назовём его div-output).</p>
3
<p>И тут в ходе работы обнаружилась одна неприятная особенность - если числа целые, то проблем не было, но если вводились дроби (наподобие 12.38), то спустя пару кликов (операций) в div-output начались выводиться значения в откровенно неудобном формате. Например, складываешь 45.57 и 34.91, а на выходе получаешь не ровные 80.48, а "абра-кадабру" в виде 80.47999999999999.</p>
3
<p>И тут в ходе работы обнаружилась одна неприятная особенность - если числа целые, то проблем не было, но если вводились дроби (наподобие 12.38), то спустя пару кликов (операций) в div-output начались выводиться значения в откровенно неудобном формате. Например, складываешь 45.57 и 34.91, а на выходе получаешь не ровные 80.48, а "абра-кадабру" в виде 80.47999999999999.</p>
4
<p>Причины такого поведения раскрываются в общеизвестном учебнике по JavaScript в разделе [Числа] (<a>https://learn.javascript.ru/number#%D0%BD%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F</a>), но нас больше интересует то, как это безобразие устранить и получить число в виде 80.48. Одним из вариантов является использование метода toFixed(), о чем кратко и без "воды" можно прочитать здесь<a>"Как округлить число до 2 знаков js"</a>, главное помнить, что этот метод возвращает строку. И в качестве второго варианта можно использовать функцию, которую нашёл в интернете на одном из форумов (думаю, что автор не будет против презентации этой функции "широкой общественности", так сказать):</p>
4
<p>Причины такого поведения раскрываются в общеизвестном учебнике по JavaScript в разделе [Числа] (<a>https://learn.javascript.ru/number#%D0%BD%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F</a>), но нас больше интересует то, как это безобразие устранить и получить число в виде 80.48. Одним из вариантов является использование метода toFixed(), о чем кратко и без "воды" можно прочитать здесь<a>"Как округлить число до 2 знаков js"</a>, главное помнить, что этот метод возвращает строку. И в качестве второго варианта можно использовать функцию, которую нашёл в интернете на одном из форумов (думаю, что автор не будет против презентации этой функции "широкой общественности", так сказать):</p>
5
<p>Допустим, надо получить число с четырьмя знаками после запятой, соответственно:</p>
5
<p>Допустим, надо получить число с четырьмя знаками после запятой, соответственно:</p>
6
<p>Поэтому, при необходимости, можно заменить метод Math.round() на Math.floor() или Math.ceil(). В общем, как-то так.</p>
6
<p>Поэтому, при необходимости, можно заменить метод Math.round() на Math.floor() или Math.ceil(). В общем, как-то так.</p>
7
<blockquote><h3>Получите профессию<a>"Фронтенд-разработчик"</a>за 10 месяцев!</h3>
7
<blockquote><h3>Получите профессию<a>"Фронтенд-разработчик"</a>за 10 месяцев!</h3>
8
<p>Погружение в практику с первого дня и обучение без дедлайнов. Вы получите готовое портфолио на GitHub к концу обучения, поддержку наставников на протяжении всего курса и помощь в трудоустройстве.</p>
8
<p>Погружение в практику с первого дня и обучение без дедлайнов. Вы получите готовое портфолио на GitHub к концу обучения, поддержку наставников на протяжении всего курса и помощь в трудоустройстве.</p>
9
</blockquote>
9
</blockquote>