0

可能重复:
Java:计算返回错误答案?

请解释为什么以下程序没有给出正确的输出。

class Test
{
    public static void main(String aa[])
    {
        float a=16.15 f;
        float b =10.0f;

        float c =a-b;
        System.out.println(c);
    }
}

/****************/ 输出:-6.1499996

4

4 回答 4

1

根据http://en.wikipedia.org/wiki/IEEE_floating-point_standard,问题在于浮动本身,而不是您的代码

对于这种情况,请考虑使用doubles 或BigDecimals

于 2012-12-06T22:06:21.657 回答
0

这是浮点数无法准确存储十进制值的完全正常结果。

于 2012-12-06T22:04:38.390 回答
0

因为浮点数,以 2 为底数不能完全表示 16.15,因此减法的结果不完全是 -6.15。

于 2012-12-06T22:05:53.697 回答
-1

该类型float没有足够好的精度来返回 -6.15。double可能还不够,浮点计算总是有一些误差范围。

于 2012-12-06T22:04:43.243 回答