Java 尝试添加两个浮点时可能出现有损转换错误?

Java 尝试添加两个浮点时可能出现有损转换错误?,java,Java,当我执行此代码时: public class TryingOutReturn { public static void main (String[] args) { float numa = 2; float numb = 3; System.out.println(addition(numa, numb)); } public static int addition (float num1, float num2) {

当我执行此代码时:

public class TryingOutReturn {
   public static void main (String[] args) {
      float numa = 2;
      float numb = 3;
      System.out.println(addition(numa, numb));
   }
   
   public static int addition (float num1, float num2) {
      float sum = num1 + num2;
      return sum;
   }
}
它给了我

 ----jGRASP exec: javac -g TryingOutReturn.java
TryingOutReturn.java:10: error: incompatible types: possible lossy conversion from float to int
      return sum;
             ^
1 error

 ----jGRASP wedge2: exit code for process is 1.
 ----jGRASP: operation complete.
为什么java很难返回浮点值?我不明白可能的有损转换意味着什么?有损甚至意味着什么?

在这个上下文中,“有损”意味着你得到一个截断并丢失信息。比如1.11(浮点)将变为1(整数),你会损失0.11。Java对类型的要求非常严格(与许多其他语言不同),这可能会让人恼火

要修复此错误,请将函数返回类型更改为float,如下所示:

public static float addition (float num1, float num2) {
  float sum = num1 + num2;
  return sum;
}
此外,为了保持一致,请将您的数字重新声明为浮动:

float numa = 2.0f;
float numb = 3.0f;

只需公开static
float
addition返回类型,或者像
return(int)sum那样将其转换为int。Java不能自动向下转换类型。看看这个,你没有得到它添加浮点数,你得到它时,试图把一个浮点数作为一个整数。哦,所以公共静态。。。下一部分指定返回的变量应该是什么类型?当我尝试您的建议时,我得到错误
TryingOutReturn.java:3:错误:不兼容类型:可能从double到float的有损转换numa=2.0;^TryingOutReturn.java:4:错误:不兼容的类型:可能存在从double到float numb=3.0的有损转换;^2个错误
浮点numa=2.0f;浮点数=3.0f
如果浮点文本的后缀为ASCII字母F或F,则它的类型为float;否则,它的类型是双精度的,并且可以选择使用ASCII字母D或D作为后缀。是的,static后面的部分指定要返回的类型。谢谢@丹尼斯科泽夫尼科夫