公斤到磅和盎司

时间:2012-11-08 05:17:59

标签: java

我正在尝试编写一个将公斤转换为磅和盎司的程序。如果用户输入100公斤,我预期的结果是220磅和7.4盎司。

我得到正确的磅值,但我的问题是得到正确的盎司值。我不知道我错过了什么。此外,当我计算盎司值时,我如何指定程序我只想要百度的答案。例如,我只想要7.4盎司而不是7.4353?

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;
}

3 个答案:

答案 0 :(得分: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));

答案 1 :(得分:1)

您需要精确十进制值的情况;最好使用BigDecimal数据类型而不是double。

BigDecimal类提供算术,缩放操作,舍入,比较,散列和格式转换的操作。 link

BigDecimal提供了将数字四舍五入到给定值的方法。

答案 2 :(得分:0)

使用DecimalFormat以所需格式打印小数位,例如

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

如果您希望舍入到小数点后一位,则将数字乘以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;