美文网首页
double相加(减)结果会有些误差

double相加(减)结果会有些误差

作者: 南城刀 | 来源:发表于2017-09-05 14:01 被阅读92次
 1 出现的问题

最近的做的一个需要是要统计订单表当天和一个月所有商户的利润总,但是在用double累加的时候数据汇出现一点点的误差。

所以想搞清楚这里面的原因。

2 原因说明

double属于floating binary point types(浮点二进制类型),也就是说都double型的数值在相加减的时候,会将数值转换成二进制的数值如10001.10010110011这种表示发再做相加减,但是在转换成二进制代码表示的时候,存储小数部分的位数会有不够的现象,即无限循环小数,这就是造成微差距的主要原因。

 3 解决办法

1.只取需要用到的位数:

小数点台后面的位数部分就不要管了,不过这种方法不太好。

2.Java的话使用BigDecimal类型:

用BigDecimal就不会出现上面的问题了,可以准确的计算小数值.

BigDecimal类型超过16位有效位的数进行精确的运算(28位),而double类型的16位,所以BigDecimal类型比Double类型能表示更精确的浮点数。

相关文章

  • double相加(减)结果会有些误差

    最近的做的一个需要是要统计订单表当天和一个月所有商户的利润总,但是在用double累加的时候数据汇出现一点点的误差...

  • Android面试知识点总结(八)

    double相加会出现什么问题? double 进行运算时,经常出现精度丢失的问题。比如: 得到结果为43.190...

  • js 浮点型精度计算

    //加法函数,用来得到精确的加法结果 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比...

  • js加减乘除浮点数问题

    /** 加法函数,用来得到精确的加法结果 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比...

  • 无限个的表示方法

    无限个数相乘 例如2的n次方: 无限个数相加 循环相加 注释 需要引用math头文件:1:次方 double a=...

  • iOS科学计算,舍入规则

    科学计数法 项目在遇到金额问题的时候,无论用float还是double结果都是会有误差的。这时候就需要用科学计数法...

  • Java double类型不一定满足加法交换律与结合律

    代码 运行结果 可以看出,由于double类型的精度损失,带来了微小误差,如果使用四舍六入五成双算法保留两位小数,...

  • Java中Float 和Double类型的精确计算

    交流群 531563207 开发中double和float类型的数据 乘或加的时候都会出现误差,可以使用此方法来避免误差

  • iOS下接入Lua

    1、Armv7平台 iPhone5的CPU直接使用的浮点计算方法有误差,会导致 double 的高精度比较与计算出...

  • 2019-06-29

    整数相加输出整数运算结果。字符和整数相加会输出字符ASCII码和整数的运算结果。而字符串再加其他类型都为字符串。 ...

网友评论

      本文标题:double相加(减)结果会有些误差

      本文链接:https://www.haomeiwen.com/subject/rtmujxtx.html