【发布时间】:2018-10-24 14:49:25
【问题描述】:
我正在从txt 转换像5.326.236,56(钱)这样的数字,并首先删除点和逗号,但我丢失了小数,我已经将这些列定义为:
@Column(name = "total", precision = 16, scale = 2)
private BigDecimal total;
但我丢失了与 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;
}
【问题讨论】:
-
所以您正在尝试将
5.326.236,56转换为532623656? -
也许你应该使用
Double或Float而不是Long -
我将 5.326.236,56 转换为“532623656”,但是当我将该值除以 100 以获得最后 2 个小数位时,Bigdecimal 等于 5326236.00
-
我总是使用字符串值来实例化
BigDecimal:BigDecimal bd = new BigDecimal("5326236.56")。这样您就不会失去任何精度。 -
Long.parseLong(cvalue) / 100给你很长的时间。