使用“x * = -1”的优点。超过“x * = -1”?

时间:2011-07-11 19:42:46

标签: python floating-point

我正在查看一些Python numpy代码,其中包含类似

的行
a = 1. # later on, `a` is multiplied by other floats
x *= -1.

(根据我希望的正确理解,1.相当于1.0)。

有没有理由在a = 1x *= -1上执行此操作?我可以理解,如果我稍后要将ax除以整数,那么我就不必担心忘记将它们转换为浮点数(假设我想要由于分裂而返回的浮动),但还有其他原因吗?

例如,如果我知道a最终会以浮点形式结束,那么出于性能原因,从一开始就将其初始化为浮点数会更好吗?或者这只是为了清楚(明确指出ax都是浮点数)?

3 个答案:

答案 0 :(得分:6)

这非常清楚。

虽然将float乘以整数可能会导致性能下降(将整数转换为float),这取决于编译器,也不应该担心(除非你正在做的< em>很多这样的操作。)

但是,为了清晰起见,它肯定会得分。最后,您确实将浮点数乘以浮点数,并且没有理由隐藏这一事实。如果ax是浮点值,请将它们设为浮点值。

答案 1 :(得分:1)

任何自我尊重的编译器都会将常量提升为适当的类型。差异只是化妆品。

答案 2 :(得分:0)

我可以检测到的输出没有差异。

>>> float(1.*-5.*0.*-1.).hex()
'0x0.0p+0'
>>> float(1.*-5.*0.*-1).hex()
'0x0.0p+0'
>>> float(1.*5.*0.*-1.).hex()
'-0x0.0p+0'
>>> float(1.*5.*0.*-1).hex()
'-0x0.0p+0'
>>>