java - 将字符串转换为 BigDecimal 并添加逗号分隔符

标签 java format bigdecimal

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

相关文章:

java - 是否可以使用客户生成器在 JOOQ 中将两个数据库字段合并为一个?

java - 在 Java 中序列化枚举有好的替代方法吗?

python : How to format large number without comma

perl - 如何在 Perl POD 中记录参数

java - 当我设置 Object.class 时,JTable DefaultCellRenderer 不适用于 BigDecimal 类型

java - 在 servlet 多部分发布期间无法访问 Spring Security 信息

java - 使用java格式化: Mixing text and pictures

java - 将字符串转换为 bigdecimal 时出错

java - 如何在 Java 中对大数进行 mod (10^9+7)

java - Tomcat 7.0.42 服务器在 Windows 中随机崩溃