【问题标题】:loss of precision-->Required double but compiler required int?精度损失-->需要双精度但编译器需要int?
【发布时间】:2013-04-18 08:58:31
【问题描述】:

我是java初学者,遇到了这个错误。

编写一个名为 pay 的方法,它接受一个实数表示助教的薪水和一个整数表示助教本周工作的小时数,并返回支付助教的金额。例如,调用 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) 的变量或参数中时,通常会发生这种情况。
可能的精度损失
发现:双
必需:整数
       总和=(y-小时)*(1.5*x)+(小时*x);
                             ^
1 个错误
19 个警告

但是错误指向了+号。有什么问题吗? 它说找到:双。但我希望我的输出翻倍。但它说根据需要int。

【问题讨论】:

  • 顺便说一句,在处理金钱时,最好使用BigDecimal 类来避免浮点运算问题。见this answer

标签: java


【解决方案1】:

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

第二个错误,如果你看Math这个类,pi()不存在,你得调用Math类的静态变量,所以应该是:

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

}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2021-04-24
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多