I have picked two random double
numbers:
double a = 7918.52;
double b = 5000.00;
I would expect to get 2918.52
from a - b
.
Well, it gives me a result of 2918.5200000000004
, which seems odd.
print(a - b); // -> 2918.5200000000004
But if I change double a
to 7918.54
, I will get the expected result of 2918.54
.
Can someone explain to me why some double
values result in unexpected rounding issues and others do not?
The reason for this is floating-point arithmetic and the fact that Dart uses the IEEE 754 standard as far as I am concerned.
This happens for all languages that use floating-point arithmetic. You can read through similar questions regarding other programming languages.
General question about floating-point arithmetic in modern programming languages.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With