-
详解Javascript中被你忽略的浮点数运算的坑,来学习吧
- 网站名称:详解Javascript中被你忽略的浮点数运算的坑,来学习吧
- 网站分类:技术文章
- 收录时间:2025-08-02 15:46
- 网站地址:
“详解Javascript中被你忽略的浮点数运算的坑,来学习吧” 网站介绍
前言
在讲解本篇文章的内容开始之前,我们先来掌握以下一些知识点。
Javascript中的数字都是双精度的浮点数。
Javascript中的整数并不是一个独立的数据类型,而是浮点数的一个子集。
Javascript
浮点数的坑
我们直接看下面的一个例子。
在浏览器的console控制台上我们分别进行以下的浮点数运算。
控制台的浮点数运算
通过控制台的运算,我们可以很惊奇的看到答案,有些运算结果竟然和我们想像的不一样,比如0.1+0.2的返回结果不是0.3,而是0.30000000000000004。
原因
首先要肯定的是这不是浏览器的问题,而是由于浮点数的精度导致的。
浮点数的精度问题并不是Javascript所独有的,例如在Java中,我们运行以下代码,同样会输出和Javascript中一样的结果。
Java中的双精度运算
那造成这个问题的原因是什么呢?
因为电脑永远都是按照二进制进行运算的,我们输入的十进制数在转化为二进制数时,并不总如人意,意思是说有些十进制并不能用准确的二进制数表示。
十进制小数转二进制表示
我们来看下十进制小数转二进制表示的过程,小数位乘以2,取整,小数部分继续乘以2,再取整,直到小数部分为0为止,然后将取整位按顺序排列。
由此方法我们可以看到以下一些十进制小数的二进制表示。
十进制与二进制
我们发现有些小数的二进制表示位数是无限循环的,这就造城了浮点数精度上的问题。
比如十进制的1.1,在用二进制表示时因为存在二进制位无限循环的表示,实际值为1.0999999999...无限接近于1.1
解决方法
遇到这种问题,常用的一种解决方法就是将浮点数转化为整数进行运算,以下是一些封装好的关于浮点运算的方法,而且经过测试,加减乘除运算都会达到自己想要的结果。
加法和减法运算
乘法和除法运算
总结
今天这篇文章讲的是Javascript中浮点数运算会产生的坑,你有遇到过吗?看了这篇文章会不会有很大的收获呢?
更多相关网站
- JavaScript字符串操作方法大全,包含ES6方法
- [西门子PLC] 在触摸屏上面进行S7-1500梯形图编程
- 外贸独立站必看:多币种切换如何悄悄吃掉你的利润?
- Mock.js 实用教程:快速上手模拟数据生成
- 编程技巧:Jquery实时验证,小数位补0,指定长度的「正小数」
- 简单的方法解决JavaScript中0.1 + 0.2 != 0.3的问题
- JS 开发者必看!TC39 2025 最新动向,这些新语法要火?
- JavaScript,ES6,数值扩展,二进制、八进制和十六进制,方法
- 如何用2 KB代码实现3D赛车游戏?2kPlus Jam大赛了解一下
- 10个JavaScript一行代码,解决90%的开发难题
- 如何使用 Fraction.js 解决 BigInt 的计算盲区?
- js四舍五入(js中四舍五入的代码怎么打)
- 最近发表
-
- TikTok Shop Enters Japan, Sparking Fresh Competition in Global E-Commerce
- China-Serbia forum highlights cooperation, civilizational dialogue
- 一文搭建智能问答聊天室(智能问答系统功能)
- 30天学会Python编程:18. Python数据库编程入门
- 亲身经历,对Gemini cli佩服的五体投地,太强了
- 莫祖永发明的世界身份证如何实现全球八十亿人民皆成为世界公民?
- 使用python scrapy框架抓取cnblog 的文章内容
- 石浩双色球2025084期:精选6+1红球三胆20 21 24缩水倍投
- Boao Forum 2025: Why China's AI ambitions matter to the world
- CBN Special丨A modern cyber-Exodus: Why “TikTok refugees” flee to Xiaohongshu and what’s next?
- 标签列表
-
- mydisktest_v298 (35)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 二调符号库 (23)
- acmecadconverter_8.52绿色版 (25)
- 梦幻诛仙表情包 (36)
- 魔兽模型 (23)
- java面试宝典2019pdf (26)
- disk++ (30)
- 加密与解密第四版pdf (29)
- iteye (26)
- parsevideo (22)
- centos7.4下载 (32)
- intouch2014r2sp1永久授权 (33)
- usb2.0-serial驱动下载 (24)
- jdk1.8.0_191下载 (27)
- axure9注册码 (30)
- virtualdrivemaster (26)
- 数据结构c语言版严蔚敏pdf (25)
- 兔兔工程量计算软件下载 (27)
- 代码整洁之道 pdf (26)
- ccproxy破解版 (31)
- aida64模板 (28)
- contentvalues (23)