Dart - вычитание некоторых двойных значений дает неправильный результат - PullRequest
3 голосов
/ 16 июня 2019

Я выбрал два случайных double числа:

double a = 7918.52;
double b = 5000.00;

Я ожидал бы получить 2918.52 от a - b.
Ну, это дает мне результат 2918.5200000000004,что кажется странным.

print(a - b); // -> 2918.5200000000004

Но если я изменю double a на 7918.54, я получу ожидаемый результат 2918.54.

Может кто-нибудь объяснить мне, почему некоторые double значения приводят к неожиданным проблемам округления, а другие нет?

1 Ответ

3 голосов
/ 16 июня 2019

Причиной этого является арифметика с плавающей точкой и тот факт, что Дарт использует, насколько мне известно, стандарт IEEE 754 .

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

Общий вопрос об арифметике с плавающей точкой в современных языках программирования.

...