代码:
//保留2位小数:
int decimalPlaces = 2;
if (value instanceof Double) {
BigDecimal bigDecimal = new BigDecimal((Double)value);
BigDecimal bigDecimalData = bigDecimal.setScale(decimalPlaces, RoundingMode.HALF_UP);
return bigDecimalData.doubleValue();
} else if (value instanceof Float) {
BigDecimal bigDecimal = new BigDecimal((Float)value);
BigDecimal bigDecimalData = bigDecimal.setScale(decimalPlaces, RoundingMode.HALF_UP);
return bigDecimalData.floatValue();
}
遇到问题
-
问题1:四舍五入精确算法 遇到5(有时)不进位的问题
## 参考url:
https://blog.csdn.net/lipingaccp/article/details/41599711
我之前也是用的这个但是有的时候遇到5不是四舍五入
f 是传过来的Double类型
BigDecimal d = new BigDecimal(f);
double e = d.setScale(1, RoundingMode.HALF_UP).doubleValue();
下面就用String去构造就可以精确到每一位了这样我的问题就解决了
## 解决方案:
BigDecimal d = new BigDecimal(Double.toString(f));
double e = d.setScale(1, RoundingMode.HALF_UP).doubleValue();