使用printf混合多种格式

时间:2013-11-27 22:32:19

标签: java format printf whitespace decimal-point

我有一个问题,我应该如何将printf用于多种格式的混合。在我的情况下,我试图给一个数字一定数量的空格,以便它完全适合在一个表中,我试图限制允许的小数位数。以下是我尝试过的printf:

System.out.printf("%1s%10s%27s%26s%28s%28s1.5d", typeOCar, startingMiles, endingMiles, Distance, gallons, MPG);

当我执行我的程序时,它会显示:

run:
                                                 Gas & Mileage Calculations

Car Type           Starting Miles             Ending Miles                 Distance                  Gallons             Miles/Gallon
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Toyota Sequoia     15543                      15565                        22                        16.5          1.33333333333333331.5dBUILD SUCCESSFUL (total time: 0 seconds)

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

import java.text.DecimalFormat;

然后在您的代码中使用它:

DecimalFormat fmt = new DecimalFormat("00.##"); //0 = numbers before . and # numbers after .

并转换任何值(例如此处直接打印出来):

System.out.println(fmt.format(varName));

答案 1 :(得分:0)

  1. 使用宽度和精度数字,浮点数的最后一个格式说明符应为f:例如,%20.5f
  2. 许多字符串说明符%xs应该是十进制说明符%xd,其中x是格式宽度。
  3. 如果进行此更改,则相应的参数应为十进制数,而不是字符串。
  4. 你传入的参数数量太多了格式说明符。这只不过是基本的数学。计算您的说明符和参数。
  5. 阅读Formatter API了解所有详情。