可能会丢失java中的精度错误

时间:2013-02-12 18:32:24

标签: java

这是我的代码:

class test{

    public static void main(String arg[]){

        int a=10, b=20;
        float c = 30.123;
        int e = (int)c;
        System.out.println(e);

    }
}

我收到了这个错误:

test.java:6: error: possible loss of precision
        float c = 30.123;
                  ^
required: float
found:    double
1 error

为什么这些?

2 个答案:

答案 0 :(得分:13)

浮点文字默认为double类型。将double值赋给float类型会导致一些精度错误。您可以将type的{​​{1}}更改为c,也可以在其末尾追加double,使其成为f,如下所示:

float

答案 1 :(得分:2)

如果在末尾指定不带f的float值,则将其视为double,这是默认值。

double d = 30.123;

对于float literal,你应该在float值的末尾追加f。

float c = 30.123f;