我想知道当 x 和 y 是整数(但浮点类型)时,x/y 是否保证产生与 kx/ky 相同的浮点值,其中 k 是整数。
因此,例如,1.0/3、2.0/6、3.0/9 ......是否都产生完全相同的 float (可以与 == 运算符进行相等比较的 float )?
如果这因语言/平台而异,我对 Linux 上的 c++ 特别感兴趣。
最佳答案
只要 k*x
和 k*y
操作是精确的(结果适合 float ),那么 IEEE754 标准保证你会得到最接近精确除法结果的 float 。
显然,由于 (k*x)/(k*y)=(x/y)
在精确数学中,最近的 float 对于两者都是相同的。
如果 k*x
或 k*y
不适合 float (浮点运算不精确),则您得不到任何保证。
关于 C++ 保证的最低限度,我不知道,但你可以认为大多数平台确实符合这些基本的 IEEE754 属性。
关于c++ - 除以整数保证产生相同的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33848119/