为什么有人会用浮点乘法而不是除法呢
Why would someone use multiplication by float instead of division
从我刚参与的一个程序中读取代码时,我发现除法几乎从未被使用过,无论是赞成还是乘浮点。
一个例子是当试图对浮动进行平均时,例如:
float a = 0.42;
float b = 0.666;
float c = (a + b) * 0.5;
显然,其目的是除以2来平均a
和b
然而,尽管很简单,但我发现与以下内容相比,* 0.5
的使用对可读性(尤其是语义)略有损害:
float c = (a + b) / 2;
产生完全相同的结果。
在这种情况下,我为什么要使用* 0.5
而不是/ 2
?
建议的重复表明乘法更快;如果使用任何优化级别,这显然是错误的(是的,我们确实使用优化进行编译)
这个问题是关于c++的,但其他语言的答案也会有所帮助。
在大多数情况下,这只能归结为个人偏好或通用编码风格。假设我们经常更改值,只是为了在扰乱函数以查看其行为时摆弄输出值。然后,由于值可能会改变,乘以浮点值可以更容易地改变为一个用除法写没有意义的数字。
此外,乘以浮点运算的一个优点是,它可以帮助避免在除以两个int时错误地向零截断。
相关文章:
- C++将浮点指针值舍入为小数位数
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么在浮点中从大到小会引入更多的误差
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 使用 int 表示浮点除法 C++
- 浮点 由于除法语句而导致的 c++ 异常
- 将浮点除法分解为整数和小数部分
- 处理融合乘加浮点不准确性的通用方法
- 浮点除法和隐式轮次
- 为什么在C和C++中没有浮点/双精度的除法余数运算
- 使用浮点值时,我应该将乘法和除法步骤结合起来吗
- 我的代码在加法和除法时忽略了小浮点
- 乘法比浮点除法快吗
- 如何显示两个整数除法的浮点结果
- 浮点除法不完善
- OpenCL内核浮点除法给出不同的结果
- 浮点乘零可以在运行时优化吗?
- 快速近似浮点除法
- 为什么有人会用浮点乘法而不是除法呢