Сложение чисел с плавающей запятой в javascript

Мне было интересно, как JavaScript обрабатывает числа с плавающей запятой.

Т.е. предположим, я установил 5 переменных (без десятичных чисел):

var a = 1/2, b = 1/3, c = 1/12, d = 1/12, e = 0;

Гарантированно ли их сумма равна 1?

Прилагаемый ответ не отвечает на мой вопрос, я хочу различать объявление переменных десятичного числа с их определением, как указано выше (0,5 против 1/2)

Возможный дубликат Как работать с точностью чисел с плавающей запятой в JavaScript?

Maxim Kukhtenkov 01.06.2018 16:57

также см. Математика с плавающей запятой не работает?, это не просто проблемы с JS, это касается того, как компьютеры работают с точностью

Liam 01.06.2018 17:51

Хорошая работа, я не сказал "возможный дубликат ...", разве не @EricPostpischil

Liam 04.06.2018 10:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
45
1

Ответы 1

Нет, не гарантируется, что сумма будет равной единице.

Операции с плавающей запятой производят приближения к реальной арифметике. В двоичных числах с плавающей запятой 1/2 будет точным, но 1/3 и 1/12 будут аппроксимированы, и добавление значений может привести к дальнейшим приближениям. Ошибки округления в каждой операции фактически случайны, поэтому нет гарантии, что они будут отменены и произведут ровно единицу. (То есть в общем; они могут или не могут создать один для конкретной задачи 1/2 + 1/3 + 1/12 + 1/12, и в этом случае они должны делать это надежно, когда одни и те же операции повторяются в одном и том же порядок. Но для подобных проблем, как правило, нет гарантии.)

Другие вопросы по теме