數(shù)字中 .
的問題
先看代碼
var a = 3.1415;
a.toFixed(); // "3"
a.toFixed(1); // "3.1"
a.toFixed(2); // "3.14"
a.toFixed(3); // "3.142"
a.toFixed(4); // "3.1415"
a.toFixed(5); // "3.14150"
Number.prototype.toFixed()
注意第四條四舍五入,最后一條的末位補(bǔ)0
上面運(yùn)算中的 .
運(yùn)算符需要注意一下嗅蔬,它是一個(gè)有效的數(shù)字字符蜘渣,會(huì)被優(yōu)先識(shí)別為數(shù)字常亮的一部分,然后才是對(duì)象屬性訪問運(yùn)算符杰刽。
錯(cuò)誤用法運(yùn)用:
其中3.toFixed()
調(diào)用是無效的菠发, .
被當(dāng)做3.
中的一部分王滤,所以無法調(diào)用toFiexed()
方法
image.png
若想實(shí)現(xiàn)正確調(diào)用,需如下方式調(diào)用
- 沒有小數(shù)點(diǎn)的需要在數(shù)字前后補(bǔ)
.
- 用小括號(hào)將數(shù)字?jǐn)U起來
image.png
較小的數(shù)值
二進(jìn)制浮點(diǎn)中一個(gè)最大的問題
0.1 + 0.2 === 0.3; // false
按著正常思路滓鸠,判斷結(jié)果應(yīng)該是true
雁乡,但是結(jié)果卻是false
,出現(xiàn)這種情況的原因是 二進(jìn)制浮點(diǎn)數(shù)中的 0.1 和 0.2 并不是十分精確糜俗,他們相加的結(jié)果并不是0.3踱稍,而是一個(gè)比較接近的數(shù)字 0.30000000000000004
image.png
解決方法:Number.EPSILON
ES6 Number.EPSILON
在ES6
中可以嘗試使用Number.EPSILON
image.png