我想在我的应用程序中使用 Number.EPSILON
值,并且想知道不同浏览器如何支持它。 MDN states Firefox 和 Chrome 支持它,但 IE 和 Safari 不支持。
我自己在IE11和Edge的控制台测试过。 Edge 给了我预期的 2.220446049250313e-16
,IE11 给了 undefined
。我无法自己测试 Safari。
是否有支持表显示不同浏览器版本的支持情况?
我可以安全地使用
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/