我正在尝试从字符串中读取一些BigDecimal值.假设我有这个字符串:"1,000,000,000.999999999999999",我希望得到一个BigDecimal.这样做的方法是什么?
首先,我不喜欢使用字符串替换的解决方案(替换逗号等).我认为应该有一些整洁的格式化程序来为我做这项工作.
我找到了一个DecimalFormatter类,但是因为它运行的时间很长 - 大量的精度都会丢失.
那么,我该怎么做呢?
我曾经习惯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) 我正在转换像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)