小数在JS中表示怎么不准确

JS用64位来进行数字的表示,但是对于小数的表示却力不从心,即使对于我们最熟悉的小数表示起来都比较困难,当然是计算机本来就存在的问题。

如 0.1 +0.2=0.30000000000000004(JS的计算结果)。

出现这种结果的原因在于计算机本质上只能是存储0和1的,对于整数来说,使用十进制转换为二进制的方法是“除2取余,逆序排列”,表示起来毫无压力。

但是对于小数用二进制来表示,方法是不同的——"乘2取整,顺序排列"。

举个“栗子”:

将0.45进行二进制表示,

0.45*2=0.9   取整为0
0.9*2=1.8     取整为1
0.8*2=1.6     取整为1
0.6*2=1.2     取整为1
0.2*2=0.4     取整为0

...直到小数部分为0,显然这里会无限循环下去。‘

所以一般会取前面的十几位二进制数尽量接近表示0.45。

由于这种计算的规则,从而对于不等于1/2^n(n>=1,n为整数)的小数,二进制是不能精确表示的。

对于像金融类行业需要精确数字的,一般是需要要分数的形式表示相应小数的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值