Skip to content

关于Number.EPSILON #508

@Mr-shao

Description

@Mr-shao

阮老师您好:
文中提到

function withinErrorMargin (left, right) {
  return Math.abs(left - right) < Number.EPSILON;
}

的方法检测是否在误差范围内
Number.EPSILON大于1的最小可表示数 与 1的差,根据IEEE754标准,就是(Number.parseInt("1"+"0".repeat(51)+"1",2) * 2 ** -52) - 1 === 2 ** -52;
并不能用来检测是否在误差范围内,比如withinErrorMargin(1.1 + 1.3, 2.4) === false;

老师,我这还有个疑问就是浮点数计算的误差最大值要怎么计算,通过parseFloat(value.toFixed(12))舍去误差方法中的toFixed括号中的值取多少更合适,谢谢

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions