use*_*756 4 floating-point double floating-accuracy ieee-754
System.out.println(2.14656);
Run Code Online (Sandbox Code Playgroud)
2.14656
System.out.println(2.14656%2);
Run Code Online (Sandbox Code Playgroud)
0.14656000000000002
WTF?
Ste*_*non 13
确实给出了预期的结果.你的期望是不正确的.
键入双精度文字时2.14656
,实际得到的是最接近的双精度值,即:
2.14656000000000002359001882723532617092132568359375
Run Code Online (Sandbox Code Playgroud)
在println
发生这一轮的时候它打印出来(到17显著位),让你看到您所期望的美好价值.
模数运算(精确)后,该值为:
0.14656000000000002359001882723532617092132568359375
Run Code Online (Sandbox Code Playgroud)
再一次,这是打印时的四舍五入,但因为有一个较少的前导数字,圆点是向右一个数字,所以你看到尾随2
.