关于小数精度丢失的一点小认知

两个例子:

在js中:0.1+0.2   !=  0.3  而是 等于0.300000000004 //这跟js默认采用双精度存储小数有关系

在php中9.45*100%100   !=  45而是等于44 //这跟php取余运算时是先取整再取余有关系

以上两种情况的根本原因应该是小数在计算机存储时精度丢失导致的.

因为有些小数在计算机使用二进制方式表示时无法准确的表示出来,类似于十进制中的1/3一样,无理数,无限循环.

可是计算机存储小数的类型不管是float还是double都是有位数限制的,所以他们存储的只是一个近似值,这就导致了精度丢失.

因为经度丢失了,所以有些时候运算结果就会跟我们预想的不太一样了.

转载于:https://www.cnblogs.com/tyong/p/10234283.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值