Javascript数字表示

时间:2013-11-03 12:17:11

标签: javascript computer-science number-formatting

这是一个着名的例子,在javascript控制台中记录0.1 + 0.2的产量

0.1 + 0.2 = 0.30000000000000004

对此的典型解释是,由于javascript表示数字的方式而发生。 我有两个问题:

1)为什么javascript决定如何表示数字 - 是不是“环境”(无论是编译代码,无论是浏览器还是其他什么?)工作来决定它如何表示数字?< / p>

2)为什么不能修复此行为以匹配大多数编程语言(java,c ++等)。我的意思是 - 如果这种行为不是很好(并且大多数人会同意它不是),为什么不可能修复。 (Douglas Crockford展示了其他javascript漏洞,例如'this'的怪异行为,并且已经持续了20年。)什么阻止javascript来解决这些错误?

1 个答案:

答案 0 :(得分:2)

  

为什么javascript决定如何表示数字 - 不是“环境”

那将是混乱。通过让JavaScript定义其基本类型的行为,我们可以依赖它们在各种环境中以这种方式运行。

好吧,“混乱”相当强烈。我相信C从来没有定义floatdouble实际上除了一些范围限制之外的东西,并且可以公平地说C是并且可以说是非常成功,“混乱”等等。尽管如此,现代趋势还是要把事情做好一点。

  

为什么无法修复此行为以匹配大多数编程语言(java,c ++等)

大多数现代编程语言的行为。大多数现代编程语言使用IEEE-754单个(通常是“float”)和双精度(通常为“double”)精度浮点数: