为什么有人会用浮点乘法而不是除法呢

Why would someone use multiplication by float instead of division

本文关键字:除法 浮点乘 为什么      更新时间:2023-10-16

从我刚参与的一个程序中读取代码时,我发现除法几乎从未被使用过,无论是赞成还是乘浮点。

一个例子是当试图对浮动进行平均时,例如:

float a = 0.42;
float b = 0.666;
float c = (a + b) * 0.5;

显然,其目的是除以2来平均ab

然而,尽管很简单,但我发现与以下内容相比,* 0.5的使用对可读性(尤其是语义)略有损害:

float c = (a + b) / 2;

产生完全相同的结果。

在这种情况下,我为什么要使用* 0.5而不是/ 2

建议的重复表明乘法更快;如果使用任何优化级别,这显然是错误的(是的,我们确实使用优化进行编译)

这个问题是关于c++的,但其他语言的答案也会有所帮助。

在大多数情况下,这只能归结为个人偏好或通用编码风格。假设我们经常更改值,只是为了在扰乱函数以查看其行为时摆弄输出值。然后,由于值可能会改变,乘以浮点值可以更容易地改变为一个用除法写没有意义的数字。

此外,乘以浮点运算的一个优点是,它可以帮助避免在除以两个int时错误地向零截断。