0
public static String convertGramsToPoundsAndOunces(String grams) {
    double weightInKG = Double.parseDouble(grams) / 1000;
    double pounds = weightInKG / 0.45359237;
    double lbs = Math.floor(pounds);
    double fraction = (pounds - lbs) * 16;
    return String.valueOf(Math.round(lbs) + "lbs" + " " + String.format("%.1f", new BigDecimal(fraction)) + "oz");
}

サービスから取得していますが305lb 0.050469oz、変換すると表示されます305lbs 0.1ozが、わずか305ポンドと表示されるはずです。

4

1 に答える 1

0

String.format()丸めはOPの期待どおりではありませんが、正しいです。

String.format("%.1f", ...に正しく変換0.050469され"0.1"ます。この形式では、最も近い 0.1 に丸められます。0.050469 は、他のどの 10 分の 1 よりも 0.1 に近いです。


OP で別の丸めモードが必要な場合は、グラムをオンスoz = gr*(1/1000.0/0.45359237*16.0)に直接変換し、必要に応じて丸めてから、ポンドとオンスに分割する方が一貫性があります。gramsさらに、これは正しく変換されない負 に役立ちます。

次のMath.round(lbs)ように必要ない可能性がありますlbs = Math.floor(pounds)

注:
0.45359237 は正確な変換係数です。
grams入力は「138347.10362」のようなものでした。

于 2013-08-14T13:35:22.187 に答える