ardentum
@ardentum

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

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

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

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

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

Похожие вопросы
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект