为什么Swift默认为双浮点数?



Swift语言指南说:

Double表示64位浮点数。使用它浮点值必须非常大或特别精确。

Float表示32位浮点数。使用它浮点值不需要64位精度。

但随后:

Swift在推断浮点数类型时总是选择Double(而不是Float)。

这不是有点矛盾吗?对于大多数浮点数,64位精度不会过高吗?这是否意味着我应该明确地定义浮点数,或者在实践中差异并不重要?

默认为Double可以保证类型推断不会导致浮点精度错误。

默认为Float在某些情况下会引起麻烦,所以我认为这是一个保守的选择。

我没有确凿的数据来支持我的说法,但我怀疑这也证明了性能差异不是那么相关。

为什么将浮点数推断为Double可能是由于:

1)许多其他语言,如JAVA和Haskell将浮点数推断为Double

2) Double具有较高的精度,确保精度不丢失。他们决定保持精度,而不是使用Float时可能看到的潜在性能改进(更低的内存)。

最新更新