DecimalFromat问题,主要是小数点后的2位数

时间:2017-01-11 01:32:42

标签: java eclipse-neon

这是我的代码:

public class TemperatureConverter {
public static float convertTemp1 (float temperature,
    char convertTo) {
    return convertTo;}
    public static String convertTemp (float temperature, char convertTo) {

     if (convertTo=='F'){
     return "The temperature in Fahrenheit is " + (9*temperature/5 + 32);
    } else if(convertTo=='C') {
     return "The temperature in Celsius is " + (temperature - 32) * 5/9;
    }  else{
     return "You can enter either F or C as convertTo argument";

}
}

public static void main(String[] args) {

System.out.println("Converting 21C to Fahrenheit. " +  convertTemp(21,'F', 0));
System.out.println("Converting 70F to Celsius. " + convertTemp(70,'C', 0));
}
}

这是您运行它时的输出:

将21C转换为华氏度。华氏温度为69.8

将70F转换为摄氏度。摄氏温度为21.11111

我一直在尝试再次尝试将2.11111改为2.11,小数点后只有2位数。愿有人帮我解决这个问题:

将21C转换为华氏度。华氏温度为69.8

将70F转换为摄氏度。摄氏温度为21.11111

对此:

将21C转换为华氏度。华氏温度为69.8

将70F转换为摄氏度。摄氏温度为21.11℃

3 个答案:

答案 0 :(得分:1)

您可以使用String.format()指定小数点后应显示的位数:

class Main {
  public static String convertTemp (float temperature, char convertTo) {
    if (convertTo == 'F') {
      return String.format("The temperature in Fahrenheit is %.1f", (9*temperature/5 + 32)); 
    } else if (convertTo == 'C') {
      return String.format("The temperature in Celsius is %.2f", (temperature - 32) * 5/9); 
    } else {
      return "You can enter either F or C as convertTo argument";
    }
  }

  public static void main(String[] args) {
    System.out.println("Converting 21C to Fahrenheit. " +  convertTemp(21,'F'));
    System.out.println("Converting 70F to Celsius. " + convertTemp(70,'C'));
  }
}

输出

Converting 21C to Fahrenheit. The temperature in Fahrenheit is 69.8
Converting 70F to Celsius. The temperature in Celsius is 21.11

试试here!

答案 1 :(得分:0)

我认为这应该有效:

    float temp = .....F;

    DecimalFormat df = new DecimalFormat("#,##0.0#");
    String formatedString = df.format(temp);

    System.out.println("temp: " + formatedString);

输入:69.888888>输出:“temp:69.89”

输入:69.8>输出:“temp:69.8”

在你的例子中,你用69.8省略了尾随零,如果你想有更多或更少的尾随零,只需将#改为0,反之亦然。

答案 2 :(得分:0)

您想使用String.format()。例如:

  public class T {
  public static void main(String[] args) {
    System.out.println(String.format("%.2f", 10.12312));
  }
}