这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战
JavaScript 并不完美~亦不影响其运行:
JavaScript 并不完美~ 但并不影响它运行起来, 并被广泛使用运行在浏览器中.
来看看一些 JavaScript 中的特别之处:
0.1 + 0.2 !== 0.3 ==> 0.30000000000000004
0.1 + 0.2 我们计算肯定就是直接得结果了, 而计算机却是通过二进制存储数据, 然后就是计算的 0.1 和 0.2 两个家伙的二进制的和.
而 0.1 的二进制是 0.0001100110011001100...(1100循环)
0.2 的二进制是:0.00110011001100...(1100循环)
JavaScript 中可精确表示的最大数: Number.MAX_SAFE_INTEGER, 如果大于这个安全数, 绝大多数整数将无法被精确表达. 如下图:
9999999999999999 //==> 10000000000000000
点到而止, 当然还可以继续追求到底: JavaScript 数据类型和数据结构 - JavaScript | MDN.
解决 0.1 + 0.2 !== 0.3, 让它们相等
1. 使用原生方法:
Number.prototype.toFixed() 这个方法
toFixed(digits) 方法使用定点表示法来格式化一个数,会对结果进行四舍五入。
numObj.toFixed(digits)
参数 digits 默认为 0; 表示小数点后数字的个数; 介于 0 - 20(包括)之间,实现环境可能支持更大范围。
2. 使用类库: math.js
math.js 官网 : mathjs.org/
math.js - npm 包 : www.npmjs.com/package/mat…
github - 仓库 : github-https://github.com/josdejong/mathjs
解决:
// 引入包, 使用其功能方法函数
const math = require('mathjs')
console.log(math.add(0.1, 0.2)) // 0.30000000000000004
console.log(math.format((math.add(math.bignumber(0.1), math.bignumber(0.2))))) // '0.3'
学习积累
养成学习记录的好习惯, 不断进步!