可能重复:
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;
}
答案 0 :(得分:2)
numofmiles
需要声明为double,而不是整数。
答案 1 :(得分:0)
将numOfMiles声明为double。精度的损失意味着您丢失了给定值的信息。如果numOfMiles是1035的整数值,则乘以1.75。这将导致值1811.25,这不是整数值。截断该值以满足变量声明会导致精度损失。
答案 2 :(得分:0)
您应该使用double基本类型或BigDecimal来获得任意精度。