发现一个奇怪的问题...

2017-11-30 10:14:11 +08:00
 yasumoto
1/3=0.3333333...
那么 1/3+1/3+1/3=0.9999999....
可是我们日常生活中 3 个 1/3 肯定是等于 1 的
1/3+1/3+1/3 到底等于 1 还是 0.9999999...啊

而且我发现在 js 里 ===不代表完全等于 如图

好奇怪啊
5648 次点击
所在节点    程序员
46 条回复
victor97
2017-11-30 11:49:31 +08:00
楼主的第一个问题是数学问题。0.99999999 无限循环,就是 1
但这个问题不能用代码验证…因为计算机浮点类型会损失精度。
qiayue
2017-11-30 11:56:08 +08:00
@yasumoto 你最后是 8,那么你一定知道中间有多少个 9,这并不是一个无限小数,所以并不等于 2
yasumoto
2017-11-30 12:05:25 +08:00
@qiayue 我知道最后是 8 不一定非要知道中间有多少 9 把
clino
2017-11-30 12:07:16 +08:00
@yasumoto 如果中间的 9 是无限的,那么就不可能有 8 的存在,所以关键是 9 是否无限
zsdroid
2017-11-30 12:11:43 +08:00
@xiubin 我大 PHP 表示不服
Tunar
2017-11-30 12:12:35 +08:00
。。突然想到这个
1/9=0.11111111111
2/9=0.22222222222
3/9=0.33333333333
。。。。。。。。。
8/9=0.88888888888
9/9=?
zsdroid
2017-11-30 12:14:32 +08:00
@yasumoto 无限小数没有最后一位,1.999999...8 是有限小数
bxb100
2017-11-30 12:37:43 +08:00
可怕
tlday
2017-11-30 12:40:41 +08:00
@xiubin 虽然我也觉得 js 设计的很烂,但你这个论据我不服。浮点数精度又不是 js 的问题。精度敏感的场合用 decimal 是常识。
yasumoto
2017-11-30 13:10:45 +08:00
@Tunar 0.99999999...
cmlx1014
2017-11-30 13:16:24 +08:00
高等数学学了没?
Ehend
2017-11-30 13:17:45 +08:00
9*x/(1-x)在区间(0,1)中可以无限展开为 9*(x+x^2+x^3+x^4+...),把 x=0.1 代入可得,0.9/0.9=9*(0.1+0.01+0.001+...)=0.9999...=1
这是高数里的级数,有兴趣可以自己学习,0.999...实质上就是 1,已经被证明了的,不是所谓的趋近于
ybf1220
2017-11-30 13:47:30 +08:00
记得以前有个比喻很形象:子弹从 0 米射向 1 米外的靶,肯定是先到 0.9 米,然后 0.99 米,然后 0.999 米 0.9999 0.99999 ……如果两个不相等不等于说子弹永远打不到 1 米的地方,所以这两个是相等的
yvanst
2017-11-30 13:56:25 +08:00
忘记在哪看到的说法了 如果两个数之间插不进任何数 那这两个就是一个数
xiubin
2017-11-30 14:24:41 +08:00
@tlday 那只是一个玩笑,不要只看前半句,看看后半句啊

另外不开玩笑看十三楼
UnknownR
2017-11-30 16:02:10 +08:00
你能找到比 1 小,比 0.9 循环大的数吗
phieo
2017-11-30 16:40:11 +08:00
这不是数学问题,是 JS 精度问题
uolcano
2017-11-30 17:01:31 +08:00
本质上是二进制到十进制小数的转换问题,所有语言都有这个问题
keinx
2017-11-30 18:28:20 +08:00
比去你那个,这个才是个奇怪的问题
![]( https://i.loli.net/2017/11/30/5a1fdd295a70e.png)
zjw60320
2017-11-30 18:50:00 +08:00
这是高中数学吧?极限的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/410724

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX