我是Java的初学者,遇到此错误。

编写一个名为pay的方法,该方法接受TA的薪水的实数,并接受TA本周工作的小时数的整数,并返回支付TA多少钱。例如,通话费用pay(5.50,6)应该返回33.0。

在8点以上的任何小时内,TA都应获得“加班”工资的1½正常工资,例如,话费(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;
}


错误:

数据类型之间不匹配。当您尝试将实数(double)存储到作为整数(int)的变量或参数中时,通常会发生这种情况。
可能会损失精度
发现:双
要求:int
       sum =(y小时)*(1.5 * x)+(小时* x);
                             ^
1个错误
19警告


但是错误指向+号,这有什么问题?
它说发现:双。但我希望输出翻倍。但是它按要求说int。

最佳答案

由于sumint,并且您要在方法中返回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;
}


对于第二个错误,如果您查看类Mathpi()不存在,则必须调用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/

10-12 00:23
查看更多