我正在查看一些Python numpy代码,其中包含类似
的行a = 1. # later on, `a` is multiplied by other floats
x *= -1.
(根据我希望的正确理解,1.
相当于1.0
)。
有没有理由在a = 1
和x *= -1
上执行此操作?我可以理解,如果我稍后要将a
和x
除以整数,那么我就不必担心忘记将它们转换为浮点数(假设我想要由于分裂而返回的浮动),但还有其他原因吗?
例如,如果我知道a
最终会以浮点形式结束,那么出于性能原因,从一开始就将其初始化为浮点数会更好吗?或者这只是为了清楚(明确指出a
和x
都是浮点数)?
答案 0 :(得分:6)
这非常清楚。
虽然将float乘以整数可能会导致性能下降(将整数转换为float),这取决于编译器,也不应该担心(除非你正在做的< em>很多这样的操作。)
但是,为了清晰起见,它肯定会得分。最后,您确实将浮点数乘以浮点数,并且没有理由隐藏这一事实。如果a
和x
是浮点值,请将它们设为浮点值。
答案 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'
>>>