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 比任何其他十分之一更接近 0.1。


如果 OP 想要不同的舍入模式,将克直接转换为 ounces 可能更一致,根据需要进行舍入,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 回答