当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Float init(_:)用法及代码示例


用法一

初始化器

init(_:)

创建一个近似给定值的新实例。

声明

init(_ other: Float80)

参数

other

用于新实例的值。

详述

如有必要,other 的值会四舍五入为可表示的值。作为 other 传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。


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


let z = Float(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(_ other: Double)

参数

other

用于新实例的值。

详述

如有必要,other 的值会四舍五入为可表示的值。作为 other 传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。


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


let z = Float(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 = Float(x)
// y == 21.25


let z = Float(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?<S>(_ text: S) where S : StringProtocol

参数

text

要转换为 Float? 实例的输入字符串。

详述

作为text 传递的字符串可以表示十进制或十六进制格式的实数,也可以是表示无穷大或NaN (“not a number”) 的特殊格式。如果 text 不是可识别的格式,则可选初始化程序将失败并返回 nil

text 字符串由可选的加号或减号字符( +- )组成,后跟以下之一:

  • decimal string 包含一个有效数字,该有效数字由一个或多个可能包含小数点的十进制数字组成:

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

    十进制字符串还可以在有效数字后面包含一个指数,指示有效数字应乘以的 10 的幂。如果包含,指数由单个字符分隔,eE,并由可选的加号或减号字符和十进制数字序列组成。

    
    let e = Float("2837.5e-2")
    // e == 28.375
  • hexadecimal string 包含由 0X0x 组成的有效数字,后跟一个或多个可能包含小数点的十六进制数字。

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

    十六进制字符串还可以包含一个指数,指示 2 的幂,有效数字应乘以该指数。如果包含,指数由单个字符分隔,pP,并由可选的加号或减号字符和十进制数字序列组成。

    
    let g = Float("0x1.c6p4")
    // g == 28.375
  • 输入字符串 "inf""infinity"(不区分大小写)将转换为无限结果:

    
    let i = Float("inf")
    // i == Float.infinity
    
    
    let j = Float("-Infinity")
    // j == -Float.infinity
  • "nan"(不区分大小写)的输入字符串被转换为 NaN 值:

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

    NaN 字符串还可以在 "nan" 关键字后面的括号中包含有效负载。有效负载由十进制数字序列或字符0X0x 后跟十六进制数字序列组成。如果有效负载包含任何其他字符,则将其忽略。如果有效载荷的值大于可以存储为 Float.nan 的有效载荷的值,则使用最低有效位。

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

除上述格式之外的任何其他格式的字符串或包含其他字符的字符串都会产生 nil 值。例如,以下转换导致 nil


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

使用 IEEE 754 roundTiesToEven(默认)舍入属性将十进制或十六进制字符串转换为 Float 实例。绝对值小于 Float.leastNonzeroMagnitude 的值将四舍五入到正负零。绝对值大于 Float.greatestFiniteMagnitude 的值将四舍五入到正无穷大或负无穷大。


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


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


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


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

可用版本

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

用法五

初始化器

init(_:)

创建一个近似给定值的新实例。

声明

init(_ other: Float16)

参数

other

用于新实例的值。

详述

如有必要,other 的值会四舍五入为可表示的值。作为 other 传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。


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


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

可用版本

iOS 14.0+, iPadOS 14.0+, macOS 11.0+, Mac Catalyst 14.0+, tvOS 14.0+, watchOS 7.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Float init(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。