希望我的代码只打印2位小数

时间:2014-02-03 22:53:47

标签: java

public class Exercise05_08 {
  public static void main(String[] args) {
    System.out.println("Celsius\t\tFahrenheit\t|\tFahrenheit\tCelsius");
    System.out.println("---------------------------------------------");

    double celsius = 40; double farenheit = 120;
    for (int i = 1; i <= 10; celsius--, farenheit -= 10, i++) {
      System.out.println(celsius + "\t\t" + celsiusToFahrenheit(celsius) + "\t|\t" +     farenheit + "\t\t" + fahrenheitToCelsius(farenheit));
    }
  }

  public static double celsiusToFahrenheit(double celsius) {
    return (9.0 / 5.0) * celsius + 32;
  }

  public static double fahrenheitToCelsius(double fahrenheit) {
    return (5.0 / 9) * (fahrenheit - 32);
  }
}

某些值打印出几个小数位,我希望所有值只打印2位小数。

4 个答案:

答案 0 :(得分:3)

使用DecimalFormat可以有两位小数:

DecimalFormat myFormatter = new DecimalFormat("#.00");
String output = myFormatter.format(value);

您可以找到有关自定义格式和模式构造(以及如何使用它们)的其他信息here

答案 1 :(得分:0)

您应该使用format()方法:

System.out.format("%.2f", celsius); 

会将值格式化为2位小数。

由于您使用的是println(),因此您可能希望在格式字符串的末尾包含“\ n”以插入换行符。

答案 2 :(得分:0)

进行以下更改,以便在点后不打印2位数字:

NumberFormat formatter = new DecimalFormat("%.2f");
String s = formatter.format(celsiusToFahrenheit(celsius));

并打印:

System.out.println(celsius + "\t\t" + s + "\t|\t" + farenheit + "\t\t" + fahrenheitToCelsius(farenheit));

答案 3 :(得分:-1)

轻松修复将结果乘以100,将它们转换为int,然后将它们再次除以100再加倍。

它可能不是最优雅的解决方案,但它可以工作..

编辑:显然有一个更优雅的解决方案,所以忘了它。