當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Float80 init(_:)用法及代碼示例


用法一

初始化器

init(_:)

創建一個近似給定值的新實例。

聲明

init(_ other: Double)

參數

other

用於新實例的值。

詳述

如有必要,other 的值會四舍五入為可表示的值。作為 other 傳遞的 NaN 會導致另一個 NaN,而信號 NaN 值將轉換為安靜的 NaN。


let x: Double = 21.25
let y = Float80(x)
// y == 21.25


let z = Float80(Double.nan)
// z.isNaN == true

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法二

初始化器

init(_:)

創建一個近似給定值的新實例。

聲明

init(_ other: Float)

參數

other

用於新實例的值。

詳述

如有必要,other 的值會四舍五入為可表示的值。作為 other 傳遞的 NaN 會導致另一個 NaN,而信號 NaN 值將轉換為安靜的 NaN。


let x: Float = 21.25
let y = Float80(x)
// y == 21.25


let z = Float80(Float.nan)
// z.isNaN == true

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法三

初始化器

init(_:)

創建一個初始化為給定值的新實例。

聲明

init(_ other: Float80)

參數

other

用於新實例的值。

詳述

other 的值完全由新實例表示。作為 other 傳遞的 NaN 會導致另一個 NaN,而信號 NaN 值將轉換為安靜的 NaN。


let x: Float80 = 21.25
let y = Float80(x)
// y == 21.25


let z = Float80(Float80.nan)
// z.isNaN == true

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法四

初始化器

init(_:)

從給定的字符串創建一個新實例。

聲明

init?<S>(_ text: S) where S : StringProtocol

參數

text

要轉換為 Float80? 實例的輸入字符串。

詳述

作為text 傳遞的字符串可以表示十進製或十六進製格式的實數,也可以是表示無窮大或NaN (“not a number”) 的特殊格式。如果 text 不是可識別的格式,則可選初始化程序將失敗並返回 nil

text 字符串由可選的加號或減號字符( +- )組成,後跟以下之一:

  • decimal string 包含一個有效數字,該有效數字由一個或多個可能包含小數點的十進製數字組成:

    
    let c = Float80("-1.0")
    // c == -1.0
    
    
    let d = Float80("28.375")
    // d == 28.375

    十進製字符串還可以在有效數字後麵包含一個指數,指示有效數字應乘以的 10 的冪。如果包含,指數由單個字符分隔,eE,並由可選的加號或減號字符和十進製數字序列組成。

    
    let e = Float80("2837.5e-2")
    // e == 28.375
  • hexadecimal string 包含由 0X0x 組成的有效數字,後跟一個或多個可能包含小數點的十六進製數字。

    
    let f = Float80("0x1c.6")
    // f == 28.375

    十六進製字符串還可以包含一個指數,指示 2 的冪,有效數字應乘以該指數。如果包含,指數由單個字符分隔,pP,並由可選的加號或減號字符和十進製數字序列組成。

    
    let g = Float80("0x1.c6p4")
    // g == 28.375
  • 輸入字符串 "inf""infinity"(不區分大小寫)將轉換為無限結果:

    
    let i = Float80("inf")
    // i == Float80.infinity
    
    
    let j = Float80("-Infinity")
    // j == -Float80.infinity
  • "nan"(不區分大小寫)的輸入字符串被轉換為 NaN 值:

    
    let n = Float80("-nan")
    // n?.isNaN == true
    // n?.sign == .minus

    NaN 字符串還可以在 "nan" 關鍵字後麵的括號中包含有效負載。有效負載由十進製數字序列或字符0X0x 後跟十六進製數字序列組成。如果有效負載包含任何其他字符,則將其忽略。如果有效載荷的值大於可以存儲為 Float80.nan 的有效載荷的值,則使用最低有效位。

    
    let p = Float80("nan(0x10)")
    // p?.isNaN == true
    // String(p!) == "nan(0x10)"

除上述格式之外的任何其他格式的字符串或包含其他字符的字符串都會產生 nil 值。例如,以下轉換導致 nil


  Float80(" 5.0")      // Includes whitespace
  Float80("±2.0")      // Invalid character
  Float80("0x1.25e4")  // Incorrect exponent format

使用 IEEE 754 roundTiesToEven(默認)舍入屬性將十進製或十六進製字符串轉換為 Float80 實例。絕對值小於 Float80.leastNonzeroMagnitude 的值將四舍五入到正負零。絕對值大於 Float80.greatestFiniteMagnitude 的值將四舍五入到正無窮大或負無窮大。


  let y = Float80("1.23e-9999")
  // y == 0.0
  // y?.sign == .plus


  let z = Float80("-7.89e-7206")
  // z == -0.0
  // z?.sign == .minus


  let r = Float80("1.23e17802")
  // r == Float80.infinity


  let s = Float80("-7.89e7206")
  // s == Float80.-infinity

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Float80 init(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。