2

可能重复:
Java 精度损失

好的,所以对于我正在编写的一个名为“Flight”的程序,我创建了一个计算飞行期间要使用的燃料量的方法。我的代码出现了 2 个错误,尽管上面写着“发现精度可能丢失:需要双精度:int” 谁能帮我找出为什么会出现这个错误?

这是我的该方法的代码:

public double calculateFuel(){
    if (numofmiles<1000){
      numofmiles = numofmiles*2;
    }
    else if (numofmiles>1000 && numofmiles<3000){
      numofmiles = numofmiles*1.75;
    }
    else if (numofmiles>3000){
      numofmiles = numofmiles*1.5;
    }
    //basing off of that a plane goes 30 miles on 1 gallon
    double fuel = numofmiles/30;

    return fuel;
  }
4

3 回答 3

2

numofmiles需要声明为双精度,而不是整数。

于 2012-05-07T22:15:52.577 回答
0

将 numOfMiles 声明为双精度。精度损失意味着您正在丢失给定值的信息。如果 numOfMiles 是 1035 的整数值,它将乘以 1.75。这将导致 1811.25 的值不是整数值。截断值以满足变量声明会导致精度损失。

于 2012-05-07T22:21:48.087 回答
0

您应该使用 double 原始类型或 BigDecimal 来获得任意精度。

于 2012-05-07T22:22:19.820 回答