0

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

0.1 + 0.2 = 0.30000000000000004

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

1)为什么javascript决定如何表示数字 - 它不是“环境”(无论它正在编译代码,是浏览器还是其他东西?)决定它想要如何表示数字的工作?

2)为什么无法修复此行为以匹配大多数编程语言(java、c++ 等)。我的意思是 - 如果这种行为不是很好(大多数人会同意它不是),为什么无法修复。(Douglas Crockford 展示了其他 javascript 缺陷,例如 'this' 的怪异行为,20 年来一直如此。)。是什么阻止了 javascript 修复这些错误?

4

1 回答 1

2

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

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

好吧,“混乱”是相当强大的。我相信 C 从来没有定义过除了一些范围限制之外什么floatdouble实际上是什么,公平地说,C 曾经并且可以说是非常成功的,“混乱”等等。尽管如此,现代趋势是把事情搞得更清楚一点。

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

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

于 2013-11-03T12:22:06.347 回答