I have two machines, one is a MIPSPro machine running IRIX and the other one is an x86_64 machine running RHEL 6.7. In both of these machines I am reading a binary stream of data and converting each 8 bytes to a doubles. I.e both doubles contain the same bytes. I should mention that the values are being printed as soon as they read, i.e they don't have any operations placed on them. However, when I try to print it out in decimal notation, there are slight differences in the least significant bit. Ie in the MIPSPro machine my list of doubles is
0.171600586
23.04003904
1680618.1772226
...
And on x86_64 my list of doubles is
0.171600585999999
23.0400390399999
1680618.17722259
...
Both machines should have use IEEE doubles.
I have two questions. Why is there is a disagreement between the two values? That is, shouldn't a set of 64 bits map to exactly one value without any ambiguity? Why is there a difference in the way they are interpreting these values?