将字符串转换为 BigDecimal 并添加逗号分隔符
Convert string to BigDecimal and add Comma Delimiter
我从文件中读取了一个字符串。此字符串应转换为 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("^(.*)(..)$", ".")
);
System.out.println(amount);
}
输出
30000000000000010300000000000000000000009876543210 -> 1030000.00
我从文件中读取了一个字符串。此字符串应转换为 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("^(.*)(..)$", ".")
);
System.out.println(amount);
}
输出
30000000000000010300000000000000000000009876543210 -> 1030000.00