возможна ошибка преобразования с потерями при попытке добавить два числа с плавающей запятой? - PullRequest
1 голос
/ 14 июля 2020

, когда я использую этот код:

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 не может вернуть мне значение с плавающей запятой? Я не понимаю, что означает возможное преобразование с потерями, что вообще означает «с потерями»? и да, я просмотрел другие сообщения, но не совсем понимаю, поскольку я новичок в Java, пожалуйста, дайте мне знать, как это исправить простыми словами, спасибо!

1 Ответ

2 голосов
/ 14 июля 2020

«С потерями» в этом контексте означает, что вы получаете усечение и теряете информацию. Например, 1.11 (float) станет 1 (int), и вы потеряете 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...