由于需要处理精度比较高的浮点数,所以弃用double类型,改用BigDecimal类来进行数值处理。
在加减乘时都没有出现问题,但是到除法运算时,提示了如下错误:
大概的意思是“无法结束的除法表达式;没有精确的除结果”。我当时输入的10/3,结果应该是3.3333....333。
于是在网上找资料,发现我原来的处理方式有问题。
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("3");
BigDecimal num3 = num1.divide(num2);
其实devide的函数定义如下
BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;
scale为小数位数;
roundingMode为小数模式;
ROUND_CEILING写成如下便可通过
BigDecimal num3 = num1.divide(num2,10,ROUND_HALF_DOWN);
http://blog.csdn.net/lopper/article/details/5314686