我有一个正在从文件中读取的字符串。此字符串应转换为 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());
}
最佳答案
你不需要删除第一个零,当你将它转换为 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
关于java - 将字符串转换为 BigDecimal 并添加逗号分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084727/