为什么String.format()不会给我一个左零填充浮点输出?

Vis*_*ota 2 java string-formatting

我正在尝试将小数字8.6渲染到左边的零填充字符串,即08.6.

为什么以下似乎不起作用?

double number = 8.6;
String.format("%03.1f", number); //expect "08.6", get "8.6"
Run Code Online (Sandbox Code Playgroud)

格式化字符串似乎是正确的.我究竟做错了什么?

pax*_*blo 9

给你一个左零填充的浮点输出,它只是领域宽度3 包括小数点和小数部分(和标志,如果是负的),所以你需要使用%04.1f而不是为特定的值.

输出:

public class Test {
    public static void main(String[] args) {
        double number = 8.6;
        System.out.println(String.format("%04.1f", number));
    }
}
Run Code Online (Sandbox Code Playgroud)

是:

08.6
Run Code Online (Sandbox Code Playgroud)