将字符串转换为BigDecimal并添加逗号分隔符

时间:2018-04-29 08:31:34

标签: java format bigdecimal

我有一个我正在从文件中读取的字符串。此字符串应转换为BigDecimal。一旦它在bigdecimal中,我就会得到这样的结果:000000000103000000。第一个数字之前的所有0都应格式化,最后两个00应为.00我将如何实现此目的?例如。 (000000004711) -> (47.11)

代码:

BigDecimal amount;
String line = "30000000000000010300000000000000000000009876543210";
final NumberFormat formatter = NumberFormat.getInstance(Locale.FRANCE);/* , instead of . */

while((line = inputStream.readLine()) != null) {

    amount = BigDecimal.valueOf(formatter.parse( 
    line.substring(2,24).replaceFirst("^0+(?!$)", "")).longValue());
}

1 个答案:

答案 0 :(得分:3)

您不需要删除第一个零,当您将其转换为BigDecimal时将忽略它,您只需要将点放在最后两位数字之前:

String line = "30000000000000010300000000000000000000009876543210";
if (line.length() >= 22) {
    BigDecimal amount = new BigDecimal(
            line.substring(2, 24).replaceFirst("^(.*)(..)$", "$1.$2")
    );
    System.out.println(amount);
}

<强>输出

30000000000000010300000000000000000000009876543210 -> 1030000.00