固定宽度浮点数格式

jos*_*hlf 5 java floating-point string-formatting fixed-width

在Java中,我有以下代码:

System.out.printf("%05.5f", myFloat);
Run Code Online (Sandbox Code Playgroud)

这适用于任何小于10的数字,但对于任何数字10或更大,小数位被修剪为5,但这并不能补偿小数点前的数字更长的事实.我想做以下其中一项:

12.3456
1.23456
Run Code Online (Sandbox Code Playgroud)

(即,相同的位数),或:

12.34567
 2.34567
Run Code Online (Sandbox Code Playgroud)

(即,填充空格,以便小数点和最后数字对齐).

如果我能够工作,我会很高兴(两者都会更好!).

有什么想法吗?谢谢!

jos*_*hlf 7

我想出了如何做到这一点:

12.34567
 2.34567
Run Code Online (Sandbox Code Playgroud)

给定格式字符串"%x.yf",它将以最小宽度x和后小数点精度格式化y.由于小数点前小数位和小数点本身计入最小宽度(x),因此宽度必须至少比精度大两倍.特别是,如果打印的数字比最小宽度宽,则它不会与相邻的线很好地对齐,因为这些线会更短.例如,如果我们尝试打印10.1然后1.1宽度为3且精度为1,我们将得到:

10.1
1.1
Run Code Online (Sandbox Code Playgroud)

但是,如果我们使用宽度为4,1.1则会填充因为它不是最小宽度:

10.1
 1.1
Run Code Online (Sandbox Code Playgroud)