浏览 2826 次
锁定老帖子 主题:少见多怪--Js中的0.29之怪现象
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-18
少见多怪--Js中的0.29之怪现象 今天遇到一个超级奇怪的问题,就是在javascript中0.29 * 100等于多少的问题。 估计有人说是39.999..996,而事实上,结果确实39. 请看以下脚本: <script language="javascript"> 运行后,你会发现,除了0.29意外,其他的结果都是整数。 为什么唯独0.29如此特殊呢?? 注:我的操作系统是win2000 sp4,ie浏览器的版本为:6.0.2800.1106 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-18
2003 IE7 结果同样
等高手来解 |
|
返回顶楼 | |
发表时间:2008-12-18
浮点数的问题 很多语言都这样 和浏览器无关
|
|
返回顶楼 | |
发表时间:2008-12-19
我是说为什么偏偏0.29如此,而别的数据没事
|
|
返回顶楼 | |
发表时间:2008-12-19
最后修改:2008-12-19
DavyLee 写道 我是说为什么偏偏0.29如此,而别的数据没事
谁告诉你的别的数据没事???? 你自己去google 吧 你标题里的"少见多怪" 用的还真是恰当 |
|
返回顶楼 | |
发表时间:2008-12-19
最后修改:2008-12-19
换种写法不就行了:alert(0.29*10*10)
|
|
返回顶楼 | |
发表时间:2008-12-19
楼主, 你要是有时间 就去 google一下 "深入浅出浮点数"
这是一篇详细介绍 浮点数原理的 文章 看完之后你就能明白了 如果没时间 给你个简陋版的答案: 这是因为计算机使用二进制保存数据,对于有限位十进制的小数来说,二进制使他变成了无限不循环小数(至于为什么,建议看数学书),损失了一点,然后在恢复成十进制时自然会有一点误差. |
|
返回顶楼 | |
发表时间:2008-12-19
无限不循环小数
fins 写道 DavyLee 写道 我是说为什么偏偏0.29如此,而别的数据没事谁告诉你的别的数据没事???? 你自己去google 吧 你标题里的"少见多怪" 用的还真是恰当 呵呵,你自己试验一下0.39*100,看看得数有小数吗? |
|
返回顶楼 | |
发表时间:2008-12-19
fins 写道 楼主, 你要是有时间 就去 google一下 "深入浅出浮点数"
这是一篇详细介绍 浮点数原理的 文章 看完之后你就能明白了 如果没时间 给你个简陋版的答案: 这是因为计算机使用二进制保存数据,对于有限位十进制的小数来说,二进制使他变成了无限不循环小数(至于为什么,建议看数学书),损失了一点,然后在恢复成十进制时自然会有一点误差. 二进制除法,用的是积分方程来逼进的..... |
|
返回顶楼 | |