javascript - JavaScript 浮点运算中的跨浏览器一致性

标签 javascript floating-point

我的目标是拥有一个百分制/弧度转换工具。

var PI      = 3.1415926535897936;
var PI_100  = 1.5707963267948968; // PI*0.5;
var PI_300  = 4.71238898038469;   // PI*(1.5);
var D_PI    = 6.283185307179587;  // 2*pi

var centTo  = 0.015707963267948967; 

Chrome 评估以下表达式,如下所示:

PI*2 == D_PI      >>> true
PI*0.5 = PI_100   >>> true
PI*1.5 = PI_300   >>> true

100*centTo == PI_100  >>> true
300*centTo == PI_300  >>> true

这些表达式在每个浏览器上是否总是true

或者我必须在比较时使用 epsilon?

var epsilon = 0.0000001;
Math.abs(a - b) < epsilon

最佳答案

无论使用哪种编程语言,除非检查无穷大或 NaN,否则使用 float 进行等价比较是不好的做法。始终最好检查一个值是否在某个公差范围内。

关于javascript - JavaScript 浮点运算中的跨浏览器一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149037/

相关文章:

javascript - 捕获浏览器的音量事件

php - 一个页面操作与多个 html 文件

c++ - 什么是浮点推测以及它与编译器的浮点模型有何不同

swift - 类型的值没有成员 - 在第一个和目标 Controller 中定义

javascript - Ember.js 如何生成 ID?

javascript - Facebook 登录获取 Rest Api

javascript - jQuery $( function() {} ) 和 $(document).ready 相同吗?

c++ - 为什么不将有理数实现并存储为零丢失信息的分数?

java - 0.0 和 1.0 被视为魔数(Magic Number)吗?

java - Math.isFinite() 方法的实现