Java中使用printf格式化double类型的正确语法是什么
我在编写
printf语句时遇到了问题,请问使用printf格式化double类型的正确语法是什么?
Java printf格式化double的正确用法
基础语法
格式化double类型统一使用%f格式符,完整可配置的语法规则如下:
%[对齐标识][最小宽度][.精度]f
各字段说明:
- 对齐标识:可选,填
-代表左对齐,默认不填为右对齐 - 最小宽度:可选,设置输出内容最少占用的字符数,长度不足时默认补空格
- .精度:可选,小数点加数字,代表保留的小数位数,比如
.2就是保留2位小数
你代码中的错误
现有代码存在三处明显问题:
- 格式符顺序错误:
%.1-15f这类写法不符合语法要求,对齐标识-需要放在宽度数值前面,精度要放在宽度之后,正确写法是%-15.1f - 格式符参数写错:
%.115f属于错误写法,你实际要实现的是宽度15、保留1位小数,应该写为%15.1f - 温度转换公式错误:摄氏度转华氏度的公式应为
华氏度 = 摄氏度 * 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
相关产品推荐
相关产品推荐

