比较JavaScript中的浮点数会产生意外结果

时间:2013-10-15 09:29:45

标签: javascript

这种打击我的想法..

http://pastebin.com/Q3MtpPpM

结果输出是“惊喜!!”。如果一个程序要使用大量的浮点值,这种方式是否会以某种方式破坏JavaScript?

2 个答案:

答案 0 :(得分:0)

比较浮点数的一种方法是使用toFixed()方法将它们转换为字符串值

var fl1 = 0.11;
var fl2 = 0.11;

if ( fl1.toFixed(10) == fl2.toFixed(10) )
{
  //same value
}

答案 1 :(得分:0)

Javascript数字是64位浮点数。请参阅此ECMAScript规范。

http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.19

任何编程语言中的浮点运算都容易出错,并不总是保证准确。有关浮点airthmatic的更多信息,请参阅以下内容

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

了解更多信息,请参阅以下QA

Is floating point math broken?

是的 WAT ,但遵循规则可以帮助您避免错误

  1. 不进行平等检查
  2. 如果是关键浮动,你知道面额后的最大点数,例如货币存储乘以该基数的值。
  3.   

    以美分而不是美元来存储货币。

         

    54.67为5467 ---并在显示之前除以100。

    更多阅读以下帖子(对于c ++,但会给出浮点错误的见解)

    http://www.codeproject.com/Articles/29637/Five-Tips-for-Floating-Point-Programming