You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用printf格式化double类型的正确语法是什么

我在编写printf语句时遇到了问题,请问使用printf格式化double类型的正确语法是什么?

Java printf格式化double的正确用法

基础语法

格式化double类型统一使用%f格式符,完整可配置的语法规则如下:

%[对齐标识][最小宽度][.精度]f

各字段说明:

  • 对齐标识:可选,填-代表左对齐,默认不填为右对齐
  • 最小宽度:可选,设置输出内容最少占用的字符数,长度不足时默认补空格
  • .精度:可选,小数点加数字,代表保留的小数位数,比如.2就是保留2位小数

你代码中的错误

现有代码存在三处明显问题:

  1. 格式符顺序错误:%.1-15f这类写法不符合语法要求,对齐标识-需要放在宽度数值前面,精度要放在宽度之后,正确写法是%-15.1f
  2. 格式符参数写错:%.115f属于错误写法,你实际要实现的是宽度15、保留1位小数,应该写为%15.1f
  3. 温度转换公式错误:摄氏度转华氏度的公式应为华氏度 = 摄氏度 * 9.0/5 + 32,你现有代码的括号包裹逻辑错误,会导致计算结果异常

修正后完整代码

public static void main(String[] args){
    System.out.printf("%-15s %-5s" + " | " + "%5s %15s \n", "Celcius", "Fahrenheit", "Fahrenheit", "Celcius");
    for(double celcius = 40, fahrenheit = 120; celcius >= 31 && fahrenheit >= 30; celcius--, fahrenheit--){
        System.out.printf("%-15.1f %-5.1f | %5.1f %15.1f\n", celcius, celciusToFahrenheit(celcius), fahrenheit, fahrenheitToCelcius(fahrenheit));
    }
}

public static double celciusToFahrenheit(double celcius){
    double fahrenheit = (9.0 / 5) * celcius + 32; 
    return fahrenheit;        
}

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

内容的提问来源于stack exchange,提问作者Tareq El-Sayyed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:45:05