这个是JS的硬伤, 由于JS的位操作关系, 返回的值不时会有这种长串出现, 你对返回值取一个固定位数小数位的操作吧:
(0.278*100).toFixed(1);
(0.278*100).toFixed(1);
解决方案 »
- $("#dataarea").bind("plothover", fn) 和$("#dataarea").plothover(fn)的区别
- 省市二级联动在修改页面怎么赋值回去JS
- 求解关于Javascript二维数据排序的问题
- 怎么把这段onmouseover事件代码简写啊?
- VS2008中的智能弹出有说明吗?
- 如何修改样式
- 菜鸟求助,关于javascript对表格进行操作?
- 正则表达式括号中的$是什么意思,如(?!\D+$)
- select框导出的问题
- 轮播图片中,点击跳转页面 IE 可以实现 火狐不能实现,求解答
- window.open打开的字窗口中怎么调用父窗口中的javascript 函数
- 哪里下载xp好用的microsoft script debugger?
但这样对系统资源要求多点,没什么大不了的
难道0.09+0.01这样的数计算也会存在精度的问题
那0.0009+0.0001为什么还没精度的问题呢(0.0009+0.0001=0.001)? 如果是你说的精度问题能更具体地解释一下吗?
0.979 * 1.0E2 = 97.89999999999999 error!
0.98 * 1.0E2 = 98
0.981 * 1.0E2 = 98.1
0.982 * 1.0E2 = 98.2
0.983 * 1.0E2 = 98.3
0.984 * 1.0E2 = 98.4
0.985 * 1.0E2 = 98.5
0.986 * 1.0E2 = 98.6
0.987 * 1.0E2 = 98.7
0.988 * 1.0E2 = 98.8
0.989 * 1.0E2 = 98.9
0.99 * 1.0E2 = 99
0.991 * 1.0E2 = 99.1
0.992 * 1.0E2 = 99.2
0.993 * 1.0E2 = 99.3
0.994 * 1.0E2 = 99.4
0.995 * 1.0E2 = 99.5
0.996 * 1.0E2 = 99.6
0.997 * 1.0E2 = 99.7
0.998 * 1.0E2 = 99.8
0.999 * 1.0E2 = 99.9
总出错数:258
看来人无完人,计算机也一样呀!
to: netvt(唯她(为了泡老婆,努力学习LISP))
说的有道理!所有的这些误差确实完全可以忽略。有谁有关于此类技术文档吗?我想了解更多一点.
1/2=0.5*2=1
1/3=0.3333……*3=0.99999……
显然第二个算式也应该等于1的。如果我们要求结果的有效位数是4位,计算时用5位去计算结果就会这样:
1/3=0.33333*3=0.99999 然后舍入 =1.0000 这样结果就对了。如果结果需要5位有效数字,那么没法根据后面的位数进行舍入,所以只能是0.99999。有时结果恰好不需要进位,那么结果也对了,这个就是为什么有的结果对,有的结果有误差的原因。这个10进制计算产生的误差和javascript有什么关系呢?问题出在我们输入十进制数转换成二进制数时,因为10进制的小数部分转换成2进制的小数部分时,有的会出现无限循环小数(具体转法很多基础书上都有),所以在计算机内存中的只是个近似数,参加运算后,有可能误差缩小,也有可能扩大,也有可能变的完全正确,最后显示给用户的结果也只能是个近似数。只有当运算时采用足够的精度进行,才能在最后结果进行舍入时更精确。那么javascript为什么不在内部运算时提高精度呢,我想大概是效率问题,提高精度就需更多的计算时间。话说回来,就算用1M内存去表示它,它还只是个近似值。