从我新贡献的程序中读取代码,我发现分裂几乎从未使用过,支持或乘以浮点数。
一个例子是尝试平均浮点数,例如:
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 ++,但其他语言的答案也可能有所帮助。
答案 0 :(得分:1)
对于大多数情况,这仅归结为个人偏好或一般编码风格。假设我们正在改变价值观,只是为了在弄乱函数时弄乱输出值以查看它的行为方式。然后,由于这些值可能会发生变化,因此乘以浮点值可以更容易地将其更改为编写为除法而无意义的数字。
此外,乘以浮点数的一个好处是它可以帮助避免截断为零,这可能会在划分两个整数时错误地发生。