如何在Java中使用下划线而不是常见的零来填充数字?
例如,我想要:
- 将123.45格式化为___123.45 - 将12345.67格式化为_12345.67 - 将0.12格式化为__ __.12
我尝试了很多方法,最接近的是使用SYMBOLS.setZeroDigit('_'):
例如,我想要:
- 将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
。编辑:格式可能无法正常显示,但我想你明白我的意思。 - Vineet Reynolds