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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shiyuqiong/article/details/47806961

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);

展开阅读全文

没有更多推荐了,返回首页