I saw the following thread[1] today on Hacker News that discusses an article that compares how various languages compute 9999999999999999.0 - 9999999999999998.0. A surprisingly large number of languages return 2 as the answer. I ran the following which returned 1:

import std.stdio: writeln;
void main(){
    writeln(cast(double)9999999999999999.0-9999999999999998.0);
}

I don't know anything about IEEE 754[2] which, according to the HN discussion, is the standard for floating point arthimetic, but was pleasantly surprised to see how D handles this. Does anyone know why?

Thanks
Samir

[1] https://news.ycombinator.com/item?id=18832155
[2] https://en.wikipedia.org/wiki/IEEE_754

Reply via email to