所以每个人都在发帖说,当他们编写以下代码时,他们会收到"可能丢失精度"错误:
float c= 30.123;
我尝试了相同的代码,编译失败,出现此错误"类型不匹配:无法从双精度转换为浮点数"。我正在用Java 7运行这个。
有人知道发生了什么吗?
30.123
隐含地是一个double
。 编译器告诉您,当您将double
值分配给float
变量时,您会失去精度。 来得及
float c = 30.123f;
基元数据类型
不同的错误消息来自不同的 IDE。 我将该行放在一个文件中,并在三个 IDE 中检查它,并尝试从命令提示符编译它,我收到了四条不同的错误消息。
命令提示符:
C:UsersBillDesktop>javac Num.java
Num.java:5: error: possible loss of precision
float c= 30.123;
^
required: float
found: double
1 error
IntelliJ:
不兼容的类型。
必需:浮点
数 发现:双
日蚀:
类型不匹配:无法从双精度转换为浮点数
蓝J:
可能损失精度
必需:浮点数;发现:双