Возможна потеря точности в два раза
int leccs1 = q1+q2+r1+swhw1;
System.out.println("LecCS = "+ leccs1+ "/60");
int lecprelim = lcp+lcpo;
System.out.println("LecPrelim = "+ lecprelim+ "/100");
double x = 0.50;
int lecgrade = ((x * leccs1) + (x * lecprelim));
System.out.println("LecGrade = "+ lecgrade);
C:\FINALS OBE\OBE1\ICS112_1ISB_LecFinals_OBE.java:61: error: possible loss of precision
int lecgrade = ((x * leccs1) + (x * lecprelim));
^
required: int
found: double
1 error
Process completed.
Я пытаюсь вычислить оценку. Пользователь вводит оценки в качестве ввода. я хочу x
быть двойным не инт.
3 ответа
Менять
int lecgrade = ((x * leccs1) + (x * lecprelim));
в
double lecgrade = ((x * leccs1) + (x * lecprelim));
int grade=lecgrade.intValue();
или в одну строку вы можете написать
int lecgrade = ((x * leccs1) + (x * lecprelim)).intValue();
использование intValue()
конвертировать из double
в int
проверьте intValue()
Если вам нужен тип lecgrade типа int, вы, возможно, захотите применить некоторое округление до приведения, например:
double lecgrade = 1.9d;
int result = (int) lecgrade;
int resultRounded = (int) Math.round(lecgrade);
System.out.println(result); // prints 1
System.out.println(resultRounded); // prints 2
Обратите внимание, что
- intValue() неприменима к примитивам, вам нужно сначала указать свое значение
intValue() может обрезать ваше значение вместо округления
Double k = Double.valueOf(1.9d); System.out.println(k.intValue()); // prints 1 for me
То, что я узнал, это то, что вы хотите lecgrade как int, вы можете сделать это путем приведения типов
Попробуй это,
int lecgrade =(int) ((x * leccs1) + (x * lecprelim));