在互联网,没有人知道你是一条狗。
而最近的全世界都认识了一条狗:阿尔法狗(AlphaGo)。没错,就是那只击败人类世界冠军的谷歌家的狗。还记得当年深蓝(Deep Blue)战胜象棋冠军时,媒体尽管震惊,但还是满怀自信地放言:计算机要在围棋上战胜人类,再等100年吧!(因为它有10的172次方种可能,远超于宇宙中所有粒子总数)。如今,没有一丝丝防备,最后的防线被攻陷了……
于是人们又开始恐慌AI了,本蜀黍(博主)当然没有资格劝说大家淡定,但有一个人可以,就是AI他爸爸。
有木有人记得这位父亲:图灵(Alan Turing)。
图灵七十多年前提出的测试,到今天仍旧是行业的准则。作为全栈工程师,我很负责任地告诉你,目前的计算机是不可能通过图灵测试的。
由一道加法开始说起:0.1+0.2 == 0.3?
很遗憾,计算机会告诉你,这个表达式恒为false。我靠,这TMD不是逆天了么。但事实就是如此,迄今为止,计算机都是冯·诺依曼体系结构(本蜀黍突然想起了《三体》中的冯·诺依曼,士兵排列成方形,举旗为1,放下为0,形成一块巨大的芯片)。
其中运算器这部分,也就是我们通常所说的CPU(相当于大脑),它永远都只能计算整数。为啥只能计算整数呢,因为它只认识0和1。那为啥只认识这两个数字呢,因为电路的底层只能实现二进制,用“开”来表示1,“关”来表示0。但它是怎么计算小数和分数的呢,答案就是我们这次的主题:浮点数。
var result = 0.1+0.2; console('0.1+0.2='+result );//0.1+0.2=0.30000000000000004
所以要辨别是人类还是机器,只要问他这个问题就好啦:
其实呢,浮点数还有更多的诡异现象,比如:
console.log(0.3/0.1); //2.9999999999999996
还有更有意思和更具深度的讲解,请移步到阮一峰老师的博客:数值
抛砖引玉哈~