首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >企业面试题: 关于JS在使用过程中 0.1+0.2!=0.3 的问题

企业面试题: 关于JS在使用过程中 0.1+0.2!=0.3 的问题

作者头像
舒克
发布2019-08-09 15:17:39
发布2019-08-09 15:17:39
1.3K0
举报

企业面试题: 关于JS在使用过程中 0.1+0.2!=0.3 的问题

考核内容: JavaScript中的二进制的浮点数的应用

题发散度: ★★★

试题难度: ★★★

友情提示:舒克老湿意在为各位准备从事前端工程师岗位的小伙伴提供思路,所有代码仅供参考,切勿背题!!理解问题以及提高自己解决问题的能力最为重要!如果你有更好的解决思路,或者有什么问题,欢迎给舒克老湿留言,大家一同进步。】

解题思路:

在JavaScript中的二进制的浮点数0.1和0.2并不是十分精确,在他们相加的结果并非正好等于0.3,而是一个比较接近的数字 0.30000000000000004;

在IE8下是得到正常的,在chrom 和Firefox下是一个带到浮点的约数;

其实这是js作浮点运算的一个bug,在JavsScript中,变量在存储时并不区分number和float类型,而是统一按float存储。

而javascript使用IEEE 754-2008 标准定义的64bit浮点格式存储number,按照IEEE 754的定义: decimal64对应的整形部分长度为10,小数部分长度为16,所以默认的计算结果为“7.0000000000000001”,如最后一个小数为0,则取1作为有效数字标志.

面试题目如下:

实际调试如下

运行结果

所以:你们会发现0.1+0.2 是不等于0.3的;

那么这个问题如何解决呢?

解决方案 :用toFixed函数指定一下小数点精度;

[(two-one).toFixed(2)==one.toFixed(2),

(eight-six).toFixed(2)==two.toFixed(2)]

调试结果:

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 迈向前端工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档