关于java:精度损失 – >必需的double但编译器需要int?

loss of precision-->Required double but compiler required int?

我是Java初学者,面对这个错误。

写一个名为pay的方法,它接受一个实数作为助教的工资,接受一个整数作为助教本周工作的小时数,并返回支付助教的金额。例如,呼叫支付(5.50,6)应返回33.0。

助教应该得到1的"加班"工资?8小时以上的正常工资。例如,呼叫支付(4.00,11)应返回(4.00*8)+(6.00*3)或50.0。

1
2
3
4
5
6
7
8
9
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;
}

错误:

1
2
3
4
5
6
7
8
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

但错误是指向+号。它出了什么问题?上面写着"发现:双倍"。但我希望我的输出是双倍的。但它是按要求写的。


由于sumint,而您用自己的方法返回sum,所以会出现错误。

1
2
3
4
5
6
7
8
9
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;
}

对于第二个错误,如果您查看类数学,pi()不存在,则必须调用类数学的静态变量,因此它应该是:

1
2
3
4
5
public double area(double x){
    x=Math.PI*Math.pow(x,2);
    return x;

}


sum的数据类型为int,而您的方法要求返回数据类型为double。