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

时间:2015-02-25 15:50:24

标签: java format bigdecimal

您好我想打印一个带小数值的数字,但不使用小数点分隔符。

Ex:我有这个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")));

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

第二种方法:

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

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

Ex: 1,1234 ==> 000112
Ex: 10,5678 ==> 001056
Ex: 100,7877 ==> 010078

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

由于 伊格纳西奥

2 个答案:

答案 0 :(得分:9)

如何乘以100。

String text = String.format("%06.0f", Double.parseDouble("275.1234")*100);

String text = String.format("%06.0f", 275.1234 * 100);

String text = String.format("%06.0f", BigDecimal.valueOf(275.1234).doubleValue() * 100);

text设置为

027512

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

String text = String.format("%06d", (long) (1234.5678 * 100));

打印

123456

答案 1 :(得分:0)

你也可以这样做

String value = "275.1234".replaceAll("\\.", "").substring(0, 5) ;