Swift语言指南说:
Double
表示64位浮点数。使用它浮点值必须非常大或特别精确。
Float
表示32位浮点数。使用它浮点值不需要64位精度。
但随后:
Swift在推断浮点数类型时总是选择
Double
(而不是Float
)。
这不是有点矛盾吗?对于大多数浮点数,64位精度不会过高吗?这是否意味着我应该明确地定义浮点数,或者在实践中差异并不重要?
默认为Double
可以保证类型推断不会导致浮点精度错误。
默认为Float
在某些情况下会引起麻烦,所以我认为这是一个保守的选择。
我没有确凿的数据来支持我的说法,但我怀疑这也证明了性能差异不是那么相关。
为什么将浮点数推断为Double
可能是由于:
1)许多其他语言,如JAVA和Haskell将浮点数推断为Double
2) Double
具有较高的精度,确保精度不丢失。他们决定保持精度,而不是使用Float
时可能看到的潜在性能改进(更低的内存)。