c++ - 除以整数保证产生相同的 float ?

标签 c++ floating-point

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

因此,例如,1.0/3、2.0/6、3.0/9 ......是否都产生完全相同的 float (可以与 == 运算符进行相等比较的 float )?

如果这因语言/平台而异,我对 Linux 上的 c++ 特别感兴趣。

最佳答案

只要 k*xk*y 操作是精确的(结果适合 float ),那么 IEEE754 标准保证你会得到最接近精确除法结果的 float 。

显然,由于 (k*x)/(k*y)=(x/y) 在精确数学中,最近的 float 对于两者都是相同的。

如果 k*xk*y 不适合 float (浮点运算不精确),则您得不到任何保证。

关于 C++ 保证的最低限度,我不知道,但你可以认为大多数平台确实符合这些基本的 IEEE754 属性。

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

相关文章:

c++ - 给定一个节点数为奇数的单链表,通过只遍历链表一次找到中间节点的两种方法是什么?

c++ - 对象未在范围内声明 (std::map)

floating-point - 实数相乘时如何避免下溢?

c++ - 在 C++ : copy or reference, 或中传递只读参数

c++ - 从位数组中提取任何更聪明的方法?

c++ - 如何使 C++11 函数采用 function<> 参数自动接受 lambdas

c++ - 如何防止相机 vector 中的浮点错误

Python string.format() 百分比不四舍五入

c# - 在 .NET 中将 double 转换为 string 不如 C++ 精确?

mysql - 如何让 MySQL 识别自定义列名?