0

キログラムをポンドとオンスに変換するプログラムを作成しようとしています。ユーザーが 100 キログラムを入力すると、結果は 220 ポンド 7.4 オンスになると予想されます。

私は正しいポンド値を取得しますが、問題は正しいオンス値を取得することです。何が欠けているのかわからない。また、オンス値を計算するときに、100 分の 1 までの答えだけが必要であることをプログラムに指定するにはどうすればよいですか。たとえば、7.4353 ではなく 7.4 オンスだけが必要ですか?

import acm.program.*;
public class KilogramsToPoundsAndOunces extends ConsoleProgram {
public void run() {

    println("This program converts Kilograms into Pounds and Ounces.");

    int kilo = readInt("please enter a number in kilograms: ");

    double lbs = kilo * POUNDS_PER_KILOGRAM; 

    double oz = lbs * OUNCES_PER_POUND; 

    double endPounds = (int) oz / OUNCES_PER_POUND;

    double endOunces =  oz - (endPounds * OUNCES_PER_POUND); 

    println( endPounds + " lbs " + endOunces + "ozs");




}
private static final double POUNDS_PER_KILOGRAM = 2.2;
private static final int OUNCES_PER_POUND = 16;
}
4

3 に答える 3

1

最も簡単な方法はSystem.out.printf、そこで出力を使用してフォーマットすることです。

System.out.printf("%d lbs %.1f ozs", endPounds, endOunces);

を使用できない場合System.out.printfでも、を使用String#formatして出力をフォーマットできます。

println(String.format("%d lbs %.1f ozs", endPounds, endOunces));
于 2012-11-08T05:23:26.943 に答える
1

正確な 10 進数値が必要な場合。double の代わりに BigDecimal データ型を使用することをお勧めします。

BigDecimal クラスは、算術演算、スケール操作、丸め、比較、ハッシュ、およびフォーマット変換の操作を提供します。リンク

BigDecimal は、数値を指定された値に丸めるメソッドを提供します。

于 2012-11-08T06:04:10.870 に答える
0

DecimalFormat小数点以下の桁数を目的の形式で出力するために使用します。

    DecimalFormat dFormat = new DecimalFormat("#.0");
    System.out.println( endPounds + " lbs " + dFormat.format(endOunces) + " ozs");

小数点以下 1 桁までの四捨五入が必要な場合は、その数値に 10 を掛けて四捨五入し、再度除算して以下のように出力します。

double roundedOunces = Math.round(endOunces*10)/10.0;
DecimalFormat dFormat = new DecimalFormat("#.0");
System.out.println( endPounds + " lbs " + dFormat.format(roundedOunces) + " ozs");

編集:

丸めのためにこれを試してください:

  double roundedOunces = Math.round(endOunces*10)/10.0;. 

丸めなし:

  double roundedOunces = endOunces*10/10.0;
于 2012-11-08T05:19:56.980 に答える