ardentum
@ardentum

Почему точность вычислений в float нарушается для чисел определённой степени двойки?

Здравствуйте! Может ли кто-то рассказать про работу чисел с плавающей точкой?
Пример следующий:

_.range(0,2050).map(i => (i + 0.99) * 100);

Почему при подобном вычислении проблемы с точностью возникают для групп чисел, начинающихся со степени двойки? Первая группа начинается с 16, вторая – с 64, и третья – с 2048. Я понимаю, что точность вычислений для float не гарантирована, но почему в данном случае она проявляется именно таким образом? Просто любопытно.
  • Вопрос задан
  • 959 просмотров
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Да, точность чисел с плавающей запятой не гарантирована. Почитайте статью на википедии, она вполне адекватна.
Не считайте деньги в плавающих числах :)
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
Связано, вероятно, с особенностями перевода дробных чисел в текст. Я попробовал повторить на Си++, ничего интересного не вышло. Зато методы перевода дробного в текст G++ и GRISU дают несколько разные результаты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект