每次增加的盎司分数?

时间:2013-06-17 08:38:56

标签: java math

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磅。

1 个答案:

答案 0 :(得分:0)

String.format()四舍五入不是OP预期,但是正确。

String.format("%.1f", ...正确将0.050469转换为"0.1"。格式指向舍入到最接近的0.1,0.050469比任何其他十分之一更接近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”。