0

抱歉,我最初想在 php PHP 整数部分填充中执行此操作,但意识到我将在 Java 的另一部分代码中执行此操作

所以我需要用至少 2 个字符的整数部分来格式化数字

2.11 -> 02.11
22.11 -> 22.11
222.11 -> 222.11
2.1111121 -> 02.1111121

double x=2.11; 
System.out.println(String.format("%08.5f", x));

可以做到,但是右边的尾随零很烦人,我想要一个任意大的浮动部分

String.format("%02d%s", (int) x, String.valueOf(x-(int) x).substring(1))

完全丑陋且不精确(给出02.1099 ...)

new DecimalFormat("00.#############").format(x)

将截断浮动部分

感谢任何更好的解决方案

4

2 回答 2

0

the best I could come with is

public static String pad(String s){
    String[] p = s.split("\\.");
    if (2 == p.length){
        return String.format("%02d.%s", Integer.parseInt(p[0]), p[1]);
    }
    return String.format("%02d", Integer.parseInt(p[0]));
}

pad(String.valueOf(1.11111118)) -> 01.11111118

于 2012-07-08T16:42:18.583 回答
-1

这是使用 DecimalFormat 的单行代码:

new DecimalFormat("00." + (x + "").replaceAll(".", "#")).format(x)

它将您的小数格式化为 00.#############...,其中 "#############..." 的长度来自长度你的小数点(“#”s 超出什么都不做)。

You can use String.valueOf(x) in place of (x + "") if you wish.

于 2012-07-08T15:24:50.417 回答