System.out.println(2.14656);
2.14656
System.out.println(2.14656%2);
0.14656000000000002
跆拳道?
最佳答案
确实给出了预期的结果。你的期望是不正确的。
当您键入 double 文字时 2.14656
,您实际得到的是最接近的 double 值,即:
2.14656000000000002359001882723532617092132568359375
println
当它打印出来时碰巧把它舍入(到 17 个有效数字),所以你会看到你期望的好值。经过模数运算(这是精确的)后,该值为:
0.14656000000000002359001882723532617092132568359375
同样,这在打印时会四舍五入,但因为前导数字少一位,所以圆点向右一位数字,因此您会看到尾随
2
.
关于floating-point - 为什么对 double 值的操作不能给出预期的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892908/