java 计算溢出

在 java/js 中decimal类型进行计算(累加之类的),计算结果之后还有一切乱七八在的数据,不晓得啥原因。但是解决方案如下:

1. 在java中的解决方案,步骤:

  a. 把decimal的数据转化成double类型:

    double xmz = 0D;

    BigDecimal zxMz = zx.getMz();

    xmz= zxMz==null?0D:zxMz.doubleValue();

  b. 将转化后的double数据,进行计算,之后通过DecimalFormat格式化下:

    java.text.DecimalFormat df = new java.text.DecimalFormat("#.0000");

    df.format(xmz+(zxMz==null?0D:zxMz.doubleValue())));

  c. 最后将DecimalFormat格式化之后的数据,转化成double类型:

    Double.valueOf(df.format(xtj+(zxTj==null?0D:zxTj.doubleValue())));

java.text.DecimalFormat df = new java.text.DecimalFormat("#.0000");
BigDecimal zxMz = zx.getMz();//zx.getMz()这个是我的程序里面通过get获取的数据
double xmz = 0D;
xmz = Double.valueOf(df.format(xmz+(zxMz==null?0D:zxMz.doubleValue())));

2.在js中解决办法:

  用substring,截取

最后,如果能在sql语句中计算,就直接在sql中计算吧,这样可以避免上述的问题  

原文地址:https://www.cnblogs.com/MissRabbit/p/6152912.html