The do give the expected results. Your expectations are incorrect.
When you type the double-precision literal 2.14656
, what you actually get is the closest double-precision value, which is:
2.14656000000000002359001882723532617092132568359375
the println
happens to round this when it prints it out (to 17 significant digits), so you see the nice value that you expect.
After the modulus operation (which is exact), the value is:
0.14656000000000002359001882723532617092132568359375
Again, this is rounded when it gets printed, but because there is one less leading digit, the round point is one digit farther to the right, and so you see that trailing 2
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…