使用double在c ++中存储值时值会发生变化,但在java中保持不变

时间:2014-09-08 11:08:52

标签: java c++ double precision

我在c ++和java中有类似的代码。按值对双变量进行调用。我将两个代码的值传递给1680.175。我可以在调试期间看到传递的值在c ++中更改为1680.1749999999902,而在java中保持不变。我必须在两位小数后舍入一个值,因此代码给出不同的结果。

2 个答案:

答案 0 :(得分:3)

价值根本没有变化,你只是打印出来,以便显示额外的小数。值1680.175在double浮点表示法中没有精确表示,最接近的值为1680.1749999999902。 Java中也是如此。

答案 1 :(得分:0)

双精度值具有尾数和指数。 1680.175内部可以存储为1680.1749999999902或者说1680.1750001002等,即接近您的实际值。如果精度很重要,那么在小数点后也提供额外的有效数字。