2

重複の可能性:
Java の精度の低下

わかりましたので、私が書いているプログラムのために「Flight」と呼びました。飛行中に使用される燃料の量を計算するメソッドを作成しました。コードで 2 つのエラーが発生していますが、「精度が失われる可能性があります: double が必要です: 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

0

numOfMiles を double として宣言します。精度が失われるということは、指定された値の情報が失われることを意味します。numOfMiles が 1035 の整数値の場合、1.75 を掛けます。これは、整数値ではない 1811.25 という値になります。変数宣言を満たすために値を切り捨てると、精度が失われます。

于 2012-05-07T22:21:48.087 に答える
0

任意の精度には double プリミティブ型または BigDecimal を使用する必要があります。

于 2012-05-07T22:22:19.820 に答える