格式化BigDecimal或不带小数分隔符的数字

Ign*_*ste 2 java format bigdecimal

嗨,我想打印一个带小数值但不使用小数分隔符的数字.

例如:我有这个275.1234,但我想要这个027512(4位数2小数,全部没有分隔符)

我尝试了两种方法:

    DecimalFormat format = new DecimalFormat("0000.00");  
    DecimalFormatSymbols custom=new DecimalFormatSymbols();
    custom.setDecimalSeparator('\u0000');
    format.setDecimalFormatSymbols(custom);
    System.out.println(format.format(new BigDecimal("275.1234")));
Run Code Online (Sandbox Code Playgroud)

这打印我:0275 12(我知道我可以删除空间)

第二种方法:

    String[] value = new BigDecimal("275.1234").toString().split("\\.");
    System.out.println(value[0] + value[1].substring(0,2));
Run Code Online (Sandbox Code Playgroud)

打印我:27512(不好我需要如果有问题的数字没有整数4位,前4位数字填充0)

Ex: 1,1234 ==> 000112
Ex: 10,5678 ==> 001056
Ex: 100,7877 ==> 010078
Run Code Online (Sandbox Code Playgroud)

基本上我想要更优雅的解决这个问题,任何想法?

谢谢伊格纳西奥

Pet*_*rey 9

如何乘以100.

String text = String.format("%06.0f", Double.parseDouble("275.1234")*100);
Run Code Online (Sandbox Code Playgroud)

要么

String text = String.format("%06.0f", 275.1234 * 100);
Run Code Online (Sandbox Code Playgroud)

要么

String text = String.format("%06.0f", BigDecimal.valueOf(275.1234).doubleValue() * 100);
Run Code Online (Sandbox Code Playgroud)

设置text

027512
Run Code Online (Sandbox Code Playgroud)

如果你想截断而不是圆形,你可以做到

String text = String.format("%06d", (long) (1234.5678 * 100));
Run Code Online (Sandbox Code Playgroud)

版画

123456
Run Code Online (Sandbox Code Playgroud)