Помощь в добавлении двойной точности - PullRequest
7 голосов
/ 23 мая 2011

Я тестировал часть своего кода, в javascript я добавил .1 + .2, и он дает мне .30000000000000004 вместо .3. Я не понимаю этого. Но когда я добавил .1 + .3, это дает мне .4. Я нашел его в Google и нашел кое-что о дополнении Double Precision. Но я не знаю, что это такое.

Ответы [ 3 ]

14 голосов
/ 23 мая 2011

Вот обязательная ссылка: Что должен знать каждый компьютерщик об арифметике с плавающей точкой

По сути, существует множество базовых 10 чисел, которые не могут быть точно представлены в формате с плавающей запятой, используемом большинством компьютеров, поэтому вы получите проблемы, подобные тем, которые вы выделили.

2 голосов
/ 23 мая 2011

Если вы не можете бодрствовать в течение Что должен знать каждый учёный об арифметике с плавающей точкой , попробуйте вместо этого округление в JavaScript .

1 голос
/ 23 мая 2011

Числа с плавающей точкой имеют конечную степень точности, поскольку число хранится в конечном количестве битов.

Число, которое вы пытаетесь сохранить, не может быть сохранено точно, поэтому используется приближение.

Что должен знать каждый учёный об арифметике с плавающей точкой .

...