我想知道x和y是整数(但为浮点类型)时,x / y是否保证产生与kx / ky相同的浮点值,其中k是整数。

因此,例如1.0 / 3、2.0 / 6、3.0 / 9,...是否都产生相同的精确浮点数(可以与==运算符相等地比较)?

如果每种语言/平台都不同,我对Linux上的c++特别感兴趣。

最佳答案

只要k*xk*y操作是精确的(结果适合浮点数),那么IEEE754标准保证您将获得与精确除法结果最接近的浮点数。

显然,由于(k*x)/(k*y)=(x/y)是精确的数学运算,因此两者的最近浮点数将相同。

如果k*xk*y不适合浮点数(浮点运算不精确),那么您将没有任何保证。

关于C++保证的最低要求,我不知道,但是您可以考虑到大多数平台确实符合这些基本的IEEE754属性。

关于c++ - 被整数除以保证产生相同的浮点数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33848119/

10-11 23:11
查看更多