浮点变量错误答案

时间:2012-12-06 22:02:50

标签: java

  

可能重复:
  Java: Calculations returning wrong answer?

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

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 个答案:

答案 0 :(得分:1)

根据http://en.wikipedia.org/wiki/IEEE_floating-point_standard

,浮动本身而不是代码存在问题

对于这种情况,请考虑使用double s或BigDecimal s

答案 1 :(得分:0)

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

答案 2 :(得分:0)

因为浮点数,基数2不能精确地代表16.15,因此减法的结果不完全是-6.15。

答案 3 :(得分:-1)

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