-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Description
JavaScript采用的是IEEE 754规范的二进制浮点数计算方法,由于精度问题。导致0.1+0.2不等于0.3。
解决办法:设置一个误差范围值,通常称为"机器精度",对JavaScript的数字来说,这个值通常是2^-52
在ES6中,该精度值定义在Number.EPSILON中。
if (!Number.EPSILON) {
Number.EPSILON = Math.pow(2, -52);
}
function numbersCloseEnoughToEqual(n1, n2) {
return Math.abs(n1 - n2) < Number.EPSILON;
}
var a = 0.1 + 0.2;
var b = 0.3;
numbersCloseEnoughToEqual(a, b); //true
numbersCloseEnoughToEqual(0.0000001, 0.0000002); //falseReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels