javascript - 浏览器支持 Number.EPSILON 吗?

标签 javascript cross-browser browser-support epsilon

我想在我的应用程序中使用 Number.EPSILON 值,并且想知道不同浏览器如何支持它。 MDN states Firefox 和 Chrome 支持它,但 IE 和 Safari 不支持。

我自己在IE11和Edge的控制台测试过。 Edge 给了我预期的 2.220446049250313e-16,IE11 给了 undefined。我无法自己测试 Safari。

  1. 是否有支持表显示不同浏览器版本的支持情况?

  2. 我可以安全地使用 var eps = Number.EPSILON || 2.220446049250313e-16; 作为回退?

最佳答案

1) 您可以在 browserling 上自己尝试一下并输入 "https://jsfiddle.net/jz350gf1/1/"(不带引号)。如果您看到红色,则表明它不受支持。

javascript 代码是 document.body.bgColor = Number.EPSILON !== undefined ? '石灰':'红色';

例如,Vista 上的 IE9 和 Safari 5.1 不支持它。

the MDN page for Number.EPSILON 底部还有兼容性表.目前,它声称只有 Chrome、Firefox 和(可能)Opera 支持它。高于 5.1 的 Safari 版本可能支持它。不过我没有 Mac 来测试它。

在 caniuse.com,here's ES6引入的功能。看起来最新版本的 Safari 已完全支持。我不确定它能追溯到多远。从那时到现在的版本是 Safari 的黑暗时代。 Opera 可能根本不支持它?不,它确实支持它。

无论哪种方式,至于 2) 是的。常量就是常量就是常量。 double float 的 epsilon 在所有语言中总是相同的。虽然您是否应该根据 this wiki page 明确地导出该值? ,您应该能够通过计算得出它。 Here's a demonstration.

function getEpsilon() {
  var e = 1.0;
  while ( ( 1.0 + 0.5 * e ) !== 1.0 )
    e *= 0.5;
  return e;
}

alert("And the epsilon is... "+getEpsilon());

所以你可以做 var eps = Number.EPSILON || getEpsilon(); 如果你想对可能使用小于 double float 类型的不合格浏览器保持 super 依赖,尽管我相信不存在(我对异常(exception)情况持开放态度)。 :)

关于javascript - 浏览器支持 Number.EPSILON 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695614/

相关文章:

javascript - 如何将 json 数据导入 AngularJS 模式对话框?

javascript - Heroku 创建命令产生 "ENOENT"错误

javascript - 内存路由器类型错误 : Cannot read property 'pathname' of undefined

transparency - 浏览器支持 PNG 透明度

html - 为什么主流浏览器不支持输入类型 ="file"的 HTML ACCEPT 属性?

javascript - 实现 COMET 客户端

cross-browser - 浏览器对电子标签的支持

html - 关于 Internet Explorer 中 CSS 的问题

caching - 强制 IE8 *不*使用兼容性 View

"from"和 "to"状态下的 CSS 转换值