【问题标题】:What are Float32 (alias of Float) and Float64 (alias of Double) for?Float32(Float 的别名)和 Float64(Double 的别名)有什么用?
【发布时间】:2019-05-10 13:26:35
【问题描述】:

在 Swift 中有 3 种通用浮点类型

  • 浮动
  • Float80

但也有2个别名

  • Float32
  • Float64

这是一个代码:

/**/

// Float 16-bit 
Float16.exponentBitCount                 //  5
Float16.significandBitCount              //  10

// Float 32-bit
Float.exponentBitCount                   //  8
Float.significandBitCount                //  23

// Alias for Float
Float32.exponentBitCount                 //  8
Float32.significandBitCount              //  23

// Float 64-bit
Double.exponentBitCount                  //  11
Double.significandBitCount               //  52

// Alias for Double
Float64.exponentBitCount                 //  11
Float64.significandBitCount              //  52

// Extended-Precision Float
Float80.exponentBitCount                 //  15
Float80.significandBitCount              //  63

/**/

问题:在 Swift 中有这两个别名的原因是什么?

它们是干什么用的?

【问题讨论】:

标签: swift floating-point double


【解决方案1】:

Float64Double 的类型别名,所以它们是相同的类型。 Float32Float 也一样。

名称 FloatDouble(或 floatdouble)是旧名称,用于许多其他语言,包括 C、C++、Java 和 C#。

[在某些(外来或非常古老的)平台上的某些语言中,它们甚至不是 32 位和 64 位的。但这对 Swift 来说并不重要。]

较新的名称Float32Float64Float80 告诉您类型的确切大小,因此更清晰、更不模糊。但是对于长期的程序员来说,他们需要一些习惯。我不确定 Float80 是否在 64 位平台上可用。

【讨论】:

    【解决方案2】:

    Normal Float 是 32 位,所以 Float 是 Fl​​oat32 的简单版本。 但是 ram 中 Double 和 Float64 的 stoing 类型是非常不同的,你不能只通过它们的指数和有效位来比较它们。

    【讨论】:

    • Double 和 Float64 是一回事(类型别名)。在存储方面没有任何差异。您似乎混淆了 Float80(扩展精度)和 Double (Float64)(双精度)。
    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2022-11-02
    • 2012-04-26
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多