硬码浮点数X.Yz圆形圆形与XYZ/100相同的值



根据浮点数学损坏吗?,0.1将被四舍五入到一定值,因为1/10不能准确地表示。但是我的问题是,硬编码的小数如何汇总?

var a=0.1;是否与 var a=1/10;相同的值?

或一般而言,var a=x.yz;是否与var a=xyz/100;相同的值?

使用IEEE 754算术时,正常操作就像计算确切的数学结果一样运行是确定性的,在某个方向上呈最接近的值。采用这种行为,将源文本" x yz "转换为浮点类型的操作,并通过100在相同类型必须具有相同的结果。

标准化JavaScript的ECMA-262规范说,数字类型具有"代表二进制浮点数IEEE标准中指定的双重精确64位格式IEEEE 754-2008值"使用一个nan。它进一步说:"数学操作,例如加法,减法,否定,乘法,划分以及本条稍后定义的数学函数,应始终理解为计算数学实数上的精确数学结果……",后来有文本描述了这样的文本如何描述这样的文本。精确的数学结果用于选择一个数字结果,包括"选择最接近x的该集合的成员。如果该集合的两个值同样接近,……"措辞和结构有点倾斜,但我相信意图在很大程度上是要符合IEEE 754的操作。

将字符串中的十进制数字(尤其是浮点/科学符号十进制法(例如1.2345E12((转换为浮点,这对于某些编程语言或它们的实现来说是一个麻烦点。并非总是理解这是一个数学操作:将十进制数字转换为浮点值。作为数学操作,应该被相同的规则覆盖:结果应该是用精确的数学执行操作,然后在所选方向上舍入到最近的代表值,并确定性规则解决关系。该标准包括一张注释人们正确执行这些转换的经典论文,因此我的解释是它打算正确执行这些转换。

鉴于此,在JavaScript中符合ECMA-262, xy z 的值应与 xyz /100相同。我将由更熟悉ECMA-262标准的人进行纠正。

最新更新