繁体   English   中英

精度损失->需要double,但是编译器需要int吗?

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

我是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;
}

错误:

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;
}

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

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

}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM