可能会失去精确度?

时间:2012-05-07 22:05:23

标签: java

  

可能重复:
  Java loss of precision

好吧,对于我写的程序,我称之为“飞行”,我创建了一种计算飞行期间使用的燃料量的方法。我在我的代码上遇到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;
  }

3 个答案:

答案 0 :(得分:2)

numofmiles需要声明为double,而不是整数。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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