如何在Java中使用下划线填充数字,而不是通常的零?如何在Java中使用下划线填充数字?
比如我想
- 123.45进行格式化,以___ 123.45和
- 12345.67被格式化,以_12345.67
- 0.12被格式化,以_ __ _ __ .12
我尝试了很多东西,离我最近是这样的(通过使用SYMBOLS.setZeroDigit( '_');):
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class Example {
public static void main(String[] args) {
DecimalFormatSymbols SYMBOLS = new DecimalFormatSymbols();
SYMBOLS.setDecimalSeparator('.');
SYMBOLS.setGroupingSeparator(',');
DecimalFormat OUTPUT_FORMAT = new DecimalFormat("000,000.00", SYMBOLS);
System.out.println(OUTPUT_FORMAT.format(0.01));
// got 000,000.01
System.out.println(OUTPUT_FORMAT.format(0.12));
// got 000,000.12
System.out.println(OUTPUT_FORMAT.format(123456));
// got 123,456.00
System.out.println(OUTPUT_FORMAT.format(123456.78));
// got 123,456.78
System.out.println(OUTPUT_FORMAT.format(1234));
// got 001,234.00
System.out.println(OUTPUT_FORMAT.format(1234.56));
// got 001,234.56
SYMBOLS.setZeroDigit('_');
OUTPUT_FORMAT = new DecimalFormat("000,000.00", SYMBOLS);
System.out.println(OUTPUT_FORMAT.format(0.01));
// expected ______._1 but got ___,___._`
System.out.println(OUTPUT_FORMAT.format(0.12));
// expected ______.12 but got ___,___.`a
System.out.println(OUTPUT_FORMAT.format(123456));
// expected 123,456.__ but got `ab,cde.__
System.out.println(OUTPUT_FORMAT.format(123456.78));
// expected 123,456.78 but got `ab,cde.fg
System.out.println(OUTPUT_FORMAT.format(1234));
// expected __1,234.00 or at least __1,234.__ but got __`,abc.__
System.out.println(OUTPUT_FORMAT.format(1234.56));
// expected __1,234.56 but got __`,abc.de
}
}
嗯,不是真的接近,但空号,如果格式化的权利(与尾随下划线): _ __ ,_ __。 __
总之,如何获得预期的行为建议?
'DecimalFormatSymbols.setZeroDigit'用于设置字符以表示零**和其后的所有其他数字**。 ''跟着'_',这就是为什么你看到'___,___._''而不是'___,___._ 1'编辑:格式不起作用,但你得到了我认为的观点。 –
是的,我知道setZeroDigit是如何工作的,但是我想要一个解决方法来达到预期的效果 – Belun