52.Carl 发表于 2018-11-28 19:33

在js里发现了一个有趣的现象

就在刚刚我们讲师上课发现的一个好玩儿的bug,是属于js里的 当你在js里编写下:
console.log(0.1+0.2);
这一条代码后,控制台输出的内容为:
0.30000000000000004
就是0.3后边出现了15个0和一个4而再写其它的就不会有这样的bug了我们讲师说这估计是应为在js里不常用所以就没有修复说是更新了几回了都没有修复这个bug而且这个bug还是给我们出考题的老师发现的。。。。。。足以说明我们的考题有多么变态!!!! 新人第一次发帖,请多关照

Einsten.M 发表于 2018-11-28 20:07

浮点数相加精度失真,所有语言都会有的。。

War-Horse 发表于 2018-11-28 20:26

精度失真很常见,所以一般来说编程语言都会提供用于高精度计算的类,比如Java的BigDecimal,不过一般来说,普通的项目是没有那么高的精度需求的,所以常用数据类型在大部分情况下适用

52.Carl 发表于 2018-11-28 19:35

这个logo加的有点瑕疵啊。。。。
源码如下:
console.log(0.1+0.2);
console.log(0.2+0.2);

用温柔将我杀死 发表于 2018-11-28 19:36

向大神学习

weemy96 发表于 2018-11-28 19:43

console.log(0.3+0.6)
出来结果是 0.8999999999999999
主要是二进制的关系

15230916103 发表于 2018-11-28 20:11

向大佬学习

马桶下的一片海 发表于 2018-11-28 20:15

我们老师说,是因为计算方法不同:eee

52.Carl 发表于 2018-11-28 20:29

Einsten.M 发表于 2018-11-28 20:07
浮点数相加精度失真,所有语言都会有的。。

是吗,,,,,第一次发现这种情况感觉很稀奇唉

52.Carl 发表于 2018-11-28 20:30

weemy96 发表于 2018-11-28 19:43
console.log(0.3+0.6)
出来结果是 0.8999999999999999
主要是二进制的关系

哦哦,这样啊,那我试试去
页: [1] 2 3
查看完整版本: 在js里发现了一个有趣的现象