Преобразуйте строку в BigDecimal и добавьте разделитель запятой - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть строка, которую я читаю из файла. Эта строка должна быть преобразована в 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 голосов
/ 29 апреля 2018

Вам не нужно удалять первые нули, это будет игнорироваться при преобразовании его в 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
...