Javascript IEEE 754-2008是确定性的吗?

Javascript IEEE 754-2008是确定性的吗?,javascript,floating-point,ieee-754,deterministic,Javascript,Floating Point,Ieee 754,Deterministic,如果我从相同的值开始,对双精度64位IEEE 754-2008值执行相同的基本操作(加法、乘法、比较等),我会得到相同的结果吗,与底层机器无关 更具体地说:因为指定一个数字值是 对应于双精度64位二进制的基元值 格式IEEE 754-2008值 我是否可以得出结论,相同的操作在这里产生相同的结果,与环境无关?(这里有很多脚注,以阻止井实际上拥挤,但它们不会影响您对ECMAScript的问题。) IEEE 754 如果我从相同的值开始,对双精度64位IEEE 754-2008值执行相同的基本操作(

如果我从相同的值开始,对双精度64位IEEE 754-2008值执行相同的基本操作(加法、乘法、比较等),我会得到相同的结果吗,与底层机器无关

更具体地说:因为指定一个数字值是

对应于双精度64位二进制的基元值 格式IEEE 754-2008值

我是否可以得出结论,相同的操作在这里产生相同的结果,与环境无关?

(这里有很多脚注,以阻止井实际上拥挤,但它们不会影响您对ECMAScript的问题。)

IEEE 754 如果我从相同的值开始,对双精度64位IEEE 754-2008值执行相同的基本操作(加法、乘法、比较等),我会得到相同的结果吗,与底层机器无关

是。

IEEE 754-2008(和IEEE 754-2019)标准精确定义了所有浮点值的加、减、乘、除和平方根运算,不同NaN值之间的区别除外。1 标准2的实施与所有输入一致。 这同样适用于三向比较(,在数字上定义,包括无穷大;在NaN上引发异常)或四向比较(,或无序,在所有浮点值上定义,包括NaN)


这五种算术运算不仅在所有输入上精确定义,而且在数值输入上也精确定义,它们被精确地定义为正确的四舍五入:浮点加法运算注意,这个问题不是关于代数恒等式的,它可能成立,也可能不成立。这个问题的读者可能感兴趣的一些相关链接:可能相关的问题:可能重复的我也对这个问题感兴趣,但我想指出的是,现在的替代方案可能是一些本地语言(如C或Rust)中的定点算法+WebAssembly,其API暴露于JavaScript端。将每个运算符作为一个函数公开,该函数在包含定点表示的
TypedArray
s上运行。这是每一个可以想象的平台上100%保证的决定论。