我是java初学者,遇到了这个错误。
编写一个名为 pay 的方法,该方法接受一个 TA 工资的实数和一个 TA 本周工作小时数的整数,并返回支付给 TA 的金额。例如,调用 pay(5.50, 6) 应返回 33.0。
对于超过 8 小时的任何时间,助教应获得 1 ½ 正常工资的“加类”工资。例如,调用 pay(4.00, 11) 应返回 (4.00 * 8) + (6.00 * 3) 或 50.0。
public double pay(double x,int y){
int sum=0;
double hours=8.0;
if(y>hours){
sum=(y-hours)*(1.5*x) + (hours*x);
}
return sum;
}
错误:
You have a mismatch between data types. This often occurs when you try to store a real number (double) into a variable or parameter that is an integer (int). possible loss of precision found : double required: int sum=(y-hours)*(1.5*x) + (hours*x); ^ 1 error 19 warnings
但是错误指向+号。这是怎么回事? 它说发现:双。但我希望我的输出是双倍的。但它说按要求 int。
最佳答案
由于 sum
是一个 int
并且您在方法中返回 sum
,这就是您收到错误的原因。
public double pay(double x,int y){
double sum=0;
double hours=8.0;
if(y>hours){
sum=(y-hours)*(1.5*x) + (hours*x);
}
return sum;
}
对于第二个错误,如果你看一下类 Math ,pi()
不存在,你必须调用Math类的静态变量,所以它应该是:
public double area(double x){
x=Math.PI*Math.pow(x,2);
return x;
}
关于java - 精度损失-->需要 double 但编译器需要 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16078584/