Добавление плавающих чисел в JavaScript - PullRequest
0 голосов
/ 01 июня 2018

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

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

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

Является ли сумма этих значений гарантированно равной1?

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

1 Ответ

0 голосов
/ 01 июня 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...