Math 什么';将0f添加到浮点的意义是什么?

Math 什么';将0f添加到浮点的意义是什么?,math,floating-point,Math,Floating Point,我看过一些代码示例,其中他们将0f添加到另一个我不太理解的浮点中 最近的一个例子来自于一个用Monogame和C#制作的高级战争克隆,如果我没记错的话 var hit = (int)(basedamage * (Math.Ceiling((double)Life / 10f) / 10f) * ((100f + 0f) / (100f +

我看过一些代码示例,其中他们将0f添加到另一个我不太理解的浮点中

最近的一个例子来自于一个用Monogame和C#制作的高级战争克隆,如果我没记错的话

                var hit = (int)(basedamage
                                * (Math.Ceiling((double)Life / 10f) / 10f)
                                * ((100f + 0f) / (100f + 0f)));
在我看来,在另一个数字上加0是毫无意义的,因为。。是0。但它被明确定义为浮动,所以我想这是有原因的

我问了一个关于我正在玩的游戏dev discord的问题,其中一个告诉我这是“也许是为了增加精确度”,但他自己似乎不太确定。我在谷歌上找不到任何信息(说实话,我真的不知道如何恰当地表达我想找到的东西)


那么,这仅仅是为了给浮点增加更多的“精度”,还是有些人这样做还有其他原因?

没有理由这样做<代码>x*((100f+0f)/(100f+0f))==x用于所有订购的
x
。这段代码可能是由于自动生成、随着时间的推移对代码进行过窄的编辑,或者由于某些人对浮点计算的错误看法而产生的。但在任何情况下,这都不是必需的。

可能的答案:根据IEEE 754标准,添加+0不是标识操作,因为它会发生变化−0到+0。然而,应用程序很少需要这样做,而且这不是您所展示的操作中的一个因素,
100f+0f
。并非每个编写代码的人都有合理的理由来解释他们所写的东西。如果没有随附的注释或其他文件解释作者的目的,则忽略它。这种代码的一个来源是,它的某些部分是由其他软件或替换自动生成的,并且其中的琐碎操作没有减少。我看到这里还有x/x(其中x=100f+0f),我认为对于非零有限数,如100f,它必须是1f。嗯。若有源代码的历史记录(比如Git),你们可以看到是谁写的代码,看看他们是否说过什么,或者问他们。git Dull告诉我们是谁写了每一行代码。考虑到这段代码的其他奇怪之处,我支持Eric的观点,即代码是由一些(不是很聪明的)工具自动生成的。