可能丢失精度误差与类型不匹配错误

时间:2013-10-19 01:03:30

标签: java java-7

所以每个人都在发帖时写下以下代码,他们会得到“可能的精度损失”错误:

float c= 30.123;

我尝试了相同的代码并且编译失败并出现此错误“类型不匹配:无法从double转换为float”。我正在使用Java 7运行它。

任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:6)

30.123隐式为double。当您为double变量分配float值时,编译器会告诉您丢失精度。做到这一点

float c = 30.123f;

Primitive Data Types


不同的错误消息来自不同的IDE。我将该行放在一个文件中,并在三个IDE中检查它,并尝试从命令提示符编译它,我得到了四个不同的错误消息。

命令提示符:

C:\Users\Bill\Desktop>javac Num.java  
Num.java:5: error: possible loss of precision  
       float c= 30.123;  
                ^  
  required: float  
  found:    double  
1 error  

的IntelliJ:

  

不兼容的类型。
  要求:浮动
  发现:双

蚀:

  

类型不匹配:无法从double转换为float

BlueJ的:

  

可能损失精度
  要求:浮动;发现:双