I've got a string that i'm reading from a file. This string should be converted to BigDecimal. Once it's in bigdecimal i've got something like this: 000000000103000000
. All the 0's before the first number shall be formatted away and the last two 00
should be .00
how would i accomplish this? eg. (000000004711) -> (47.11)
Code:
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());
}
You don't need to remove the first zeros, it will be ignored when you convert it to BigDecimal, you just need to put the dot before the two last digits :
String line = "30000000000000010300000000000000000000009876543210";
if (line.length() >= 22) {
BigDecimal amount = new BigDecimal(
line.substring(2, 24).replaceFirst("^(.*)(..)$", "$1.$2")
);
System.out.println(amount);
}
Output
30000000000000010300000000000000000000009876543210 -> 1030000.00