可能会丢失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 

为什么这些?

浮点文字默认为double类型。 将double值赋给float类型会导致一些精度错误。 您可以将ctype更改为double ,或者在其末尾附加f以使其float如下所示:

 float c = 30.123f; 

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

 double d = 30.123; 

对于float literal,您应该在float值的末尾附加f。

 float c = 30.123f;