在Java中如何用下划线填充数字?

在Java中如何用下划线填充数字?,java,number-formatting,Java,Number Formatting,在Java中,如何用下划线代替通常的零填充数字 比如我想要 123.45格式为uuuuuu 123.45和 12345.67格式为_12345.67 0.12格式为\uuuuuuuuuuuuu.12 我尝试了很多东西,最接近的是这个(通过使用符号。setZeroDigit(“”)): 好的,不是很接近,但如果格式正确(带尾随下划线),则为空: \uuuuuu,\uuuuuuu\uuuuuu 总之,关于如何获得预期行为的建议 "_________".substring( num.length

在Java中,如何用下划线代替通常的零填充数字

比如我想要

  • 123.45格式为uuuuuu 123.45和
  • 12345.67格式为_12345.67
  • 0.12格式为\uuuuuuuuuuuuu.12
我尝试了很多东西,最接近的是这个(通过使用符号。setZeroDigit(“”)):

好的,不是很接近,但如果格式正确(带尾随下划线),则为空: \uuuuuu\uuuuuuu\uuuuuu

总之,关于如何获得预期行为的建议

"_________".substring( num.length() )+num;
其中,
num
是保存您的号码的
字符串。要将
double
转换为
String
,可以使用
double.toString(myDouble)
您可以使用Apache Commons库中的方法

// pad to 10 chars
String padded = StringUtils.leftPad("123.456", 10, '_');
// padded will be equal to "___123.456"
达达

import java.text.DecimalFormat;

class F { 
  public static void main( String ... args ) { 
    DecimalFormat f = new DecimalFormat("000,000.00");
    for( double d : new double[]{ 0.01, 0.12, 123456, 123456.78, 1234, 1234.56 }){ 
      System.out.println( 
        f.format(d).replaceAll("0","_").replaceAll("_,_","__")
      );
    }
  }
}
输出:

______._1
______.12
123,456.__
123,456.78
__1,234.__
__1,234.56

也许替换可以一步完成,但我会告诉你的。

十进制符号。setZeroDigit
用于设置字符以表示零以及其后的所有其他数字下面是
,这就是为什么你看到的是
>\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu1`Edit:格式不起作用,但你应该明白了。是的,我知道setZeroDigit是如何工作的,但我想找到一个解决办法来实现预期的
产生的是
123456.78
而不是
123456.78
我不确定Marcelo,比如OP期望
\uuuuuuuuuuu.\u1
0.01
而不是
\uuuuuuuuu.01
。从最初的问题中,我选择了“预期…”并用断言进行测试。看这里:所以,根据OP预期,这段代码做了需要做的事情。那么0.01应该填充到谁呢?\uuuuuuuuu1?@Belun你是对的,实现询问者需求的唯一方法是开发一个用户方法。
______._1
______.12
123,456.__
123,456.78
__1,234.__
__1,234.56