我在c ++和java中有类似的代码。按值对双变量进行调用。我将两个代码的值传递给1680.175。我可以在调试期间看到传递的值在c ++中更改为1680.1749999999902,而在java中保持不变。我必须在两位小数后舍入一个值,因此代码给出不同的结果。
答案 0 :(得分:3)
价值根本没有变化,你只是打印出来,以便显示额外的小数。值1680.175在double
浮点表示法中没有精确表示,最接近的值为1680.1749999999902。 Java中也是如此。
答案 1 :(得分:0)
双精度值具有尾数和指数。 1680.175内部可以存储为1680.1749999999902或者说1680.1750001002等,即接近您的实际值。如果精度很重要,那么在小数点后也提供额外的有效数字。