我有一个我正在从文件中读取的字符串。此字符串应转换为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());
}
答案 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