相关疑难解决方法(0)

安全字符串到BigDecimal转换

我正在尝试从字符串中读取一些BigDecimal值.假设我有这个字符串:"1,000,000,000.999999999999999",我希望得到一个BigDecimal.这样做的方法是什么?

首先,我不喜欢使用字符串替换的解决方案(替换逗号等).我认为应该有一些整洁的格式化程序来为我做这项工作.

我找到了一个DecimalFormatter类,但是因为它运行的时间很长 - 大量的精度都会丢失.

那么,我该怎么做呢?

java parsing bigdecimal

117
推荐指数
4
解决办法
35万
查看次数

在格式化的值中替换DecimalFormat的分组分隔符

我曾经习惯DecimalFormat df = new DecimalFormat("#,###.00");格式化BigDecimal.

现在,我想使用该格式化的值(比如它是'1 250,00')来创建new BigDecimal.我试过这个:

BigDecimal result = new BigDecimal(model.getValue().replace(",",".").replace(" ",""));
Run Code Online (Sandbox Code Playgroud)

但是space1 250和2之间的1到2不会被替换.我该如何解决?

例:

DecimalFormat df = new DecimalFormat("#,###.00");
BigDecimal example = new BigDecimal("1250");
String str = df.format(example);
System.out.println(str.replace(",",".").replace(" ",""));
Run Code Online (Sandbox Code Playgroud)

java bigdecimal decimalformat

5
推荐指数
2
解决办法
3749
查看次数

为什么我会失去 Bigdecimal 精度?

我正在转换像5.326.236,56(钱)这样的数字,txt然后首先删除点和逗号,但我丢失了小数,并且我已经将列定义为:

@Column(name = "total", precision = 16, scale = 2)
private BigDecimal total;
Run Code Online (Sandbox Code Playgroud)

但我丢失了对应于Decimal部分的最后 2 位数字

这是我的代码:

private BigDecimal parseBigLong(String stringNumber) {
    String cvalue = "";
    for (int n = 0; n < stringNumber.length(); n++) {
        char c = stringNumber.charAt(n);
        if (!(".").equals(String.valueOf(c))) {
            if (!(",").equals(String.valueOf(c))) {
                if (!("-").equals(String.valueOf(c))) {
                    cvalue = cvalue + c;
                }
            }
        }
    }
    BigDecimal bigDecimal = ( BigDecimal.valueOf(Long.parseLong(cvalue) / 100));

    return bigDecimal;
}
Run Code Online (Sandbox Code Playgroud)

java hibernate

1
推荐指数
1
解决办法
626
查看次数

标签 统计

java ×3

bigdecimal ×2

decimalformat ×1

hibernate ×1

parsing ×1