1)您可以在浏览器中自己尝试并打卡"https://jsfiddle.net/jz350gf1/1/"
(不带引号)。如果您看到红色,则表示不支持。
javascript 代码是document.body.bgColor = Number.EPSILON !== undefined ? 'lime' : 'red';
.
例如,Vista 上的 IE9 和 Safari 5.1 不支持它。
在 MDN 页面底部还有Number.EPSILON的兼容性表。目前,它声称只有 Chrome、Firefox 和(也许)Opera 支持它。大于 5.1 的 Safari 版本可能支持它。不过我没有Mac来测试它。
在 caniuse.com,这里是 ES6 引入这些特性的地方。看起来最新版本的 Safari 已完全支持。我不确定它可以追溯到多远。从那时到现在的版本是 Safari 的黑暗时代。Opera 可能不支持它?不,它确实支持它。
无论哪种方式,至于2)是的。常数是常数是常数。双精度浮点的 epsilon 在所有语言中总是相同的。尽管您应该根据此 wiki 页面具体导出该值,但您应该能够通过计算导出它。这是一个演示。
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();
如果您想对可能使用少于双精度浮点数类型的不合格浏览器保持超级关注,您可以这样做,尽管我相信不存在(我对例外持开放态度)。:)