前言:
使用BigDecimal处理保留的小数点位数的时候,发生一下异常
异常:
<span style="font-size:18px;">E/AndroidRuntime: FATAL EXCEPTION: main
Process: dianshi.matchtrader, PID: 2006
java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.roundingBehavior(BigDecimal.java:2765)
at java.math.BigDecimal.dividePrimitiveLongs(BigDecimal.java:1119)
at java.math.BigDecimal.setScale(BigDecimal.java:1889)
</span> at java.math.BigDecimal.setScale(BigDecimal.java:1937)
异常出现的地方:
<pre name="code" class="java"><span style="font-size:18px;"> /**
* 将一个字符串或者Double 转成指定小数位的BigDecimal
* @param scale
* @return
*/
public static BigDecimal toBigDecimal(double numble,int scale){
BigDecimal bigDecimal=BigDecimal.valueOf(numble);
<span style="color:#FF0000;">bigDecimal = bigDecimal.setScale(scale);</span>
return bigDecimal;
}</span>
解决方法:
添加 roundingMode参数,例如使用setScale(scale,BigDecimal.ROUND_HALF_UP)
问题出现原因:
未知,稍后分析