js,二进制浮点数和四舍五入的问题

javascript 通过浮点数形式只能表示出有限的个数,即:在JavaScript中使用实数的时候,常常只是真实值的一个近似表示。
JavaScript采用的是IEEE-754浮点数表示法(现在使用的的编程语言大多数多是使用该表示法)。IEEE-754浮点数表示法:是一种二进制表示法,它可以精确的表示分数,比如1/2,1/4,1/8,……,1/1024,但是我们一般使用的是分数多是十进制的1/10,
1/100等,以至于二进制表示法不能精确的表示类似于0.1这样简单的数值。
JavaScript中的数值有足够的精度,可极其近似于0.1,由于JavaScript的浮点数的二进制表示法不能精确的表示出类似0.1这样的数值就有可能出现类似下例的误差:

                            eg1:  x=.3-.2
                            eg2:    y=.2-.1
                            可能造成 x==y;//返回false的情况
                            在计算时,x和y返回的只是  近似于0.1的值,由于四舍五入的误差造成x==y返回false的情况.
                            注:.3-0.2 返回的是0.099 999  999 999 999 98 这样的数值极近似0.1的数值。

所以一般现实中尽量使用大整数,比如尽量使用最小单位:使用‘分’代替‘元’。
JavaScript使用 toFixed(要保留的小数位数) var a = 10.12345; a.toFixed(3);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值