用法一
init(_:)
声明
init(_ other: Float)
参数
other
用于新实例的值。
详述
如有必要,other
的值会四舍五入为可表示的值。作为 other
传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。
let x: Float = 21.25
let y = Double(x)
// y == 21.25
let z = Double(Float.nan)
// z.isNaN == true
可用版本
用法二
init(_:)
声明
init?<S>(_ text: S) where S : StringProtocol
参数
text
要转换为
Double?
实例的输入字符串。
详述
作为text
传递的字符串可以表示十进制或十六进制格式的实数,也可以是表示无穷大或NaN (“not a number”) 的特殊格式。如果 text
不是可识别的格式,则可选初始化程序将失败并返回 nil
。
text
字符串由可选的加号或减号字符( +
或 -
)组成,后跟以下之一:
-
decimal string
包含一个有效数字,该有效数字由一个或多个可能包含小数点的十进制数字组成:let c = Double("-1.0") // c == -1.0 let d = Double("28.375") // d == 28.375
十进制字符串还可以在有效数字后面包含一个指数,指示有效数字应乘以的 10 的幂。如果包含,指数由单个字符分隔,
e
或E
,并由可选的加号或减号字符和十进制数字序列组成。let e = Double("2837.5e-2") // e == 28.375
-
hexadecimal string
包含由0X
或0x
组成的有效数字,后跟一个或多个可能包含小数点的十六进制数字。let f = Double("0x1c.6") // f == 28.375
十六进制字符串还可以包含一个指数,指示 2 的幂,有效数字应乘以该指数。如果包含,指数由单个字符分隔,
p
或P
,并由可选的加号或减号字符和十进制数字序列组成。let g = Double("0x1.c6p4") // g == 28.375
-
输入字符串
"inf"
或"infinity"
(不区分大小写)将转换为无限结果:let i = Double("inf") // i == Double.infinity let j = Double("-Infinity") // j == -Double.infinity
-
"nan"
(不区分大小写)的输入字符串被转换为NaN
值:let n = Double("-nan") // n?.isNaN == true // n?.sign == .minus
NaN 字符串还可以在
"nan"
关键字后面的括号中包含有效负载。有效负载由十进制数字序列或字符0X
或0x
后跟十六进制数字序列组成。如果有效负载包含任何其他字符,则将其忽略。如果有效载荷的值大于可以存储为Double.nan
的有效载荷的值,则使用最低有效位。let p = Double("nan(0x10)") // p?.isNaN == true // String(p!) == "nan(0x10)"
除上述格式之外的任何其他格式的字符串或包含其他字符的字符串都会产生 nil
值。例如,以下转换导致 nil
:
Double(" 5.0") // Includes whitespace
Double("±2.0") // Invalid character
Double("0x1.25e4") // Incorrect exponent format
使用 IEEE 754 roundTiesToEven(默认)舍入属性将十进制或十六进制字符串转换为 Double
实例。绝对值小于 Double.leastNonzeroMagnitude
的值将四舍五入到正负零。绝对值大于 Double.greatestFiniteMagnitude
的值将四舍五入到正无穷大或负无穷大。
let y = Double("1.23e-9999")
// y == 0.0
// y?.sign == .plus
let z = Double("-7.89e-7206")
// z == -0.0
// z?.sign == .minus
let r = Double("1.23e17802")
// r == Double.infinity
let s = Double("-7.89e7206")
// s == Double.-infinity
可用版本
用法三
init(_:)
声明
init(_ other: Float80)
参数
other
用于新实例的值。
详述
如有必要,other
的值会四舍五入为可表示的值。作为 other
传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。
let x: Float80 = 21.25
let y = Double(x)
// y == 21.25
let z = Double(Float80.nan)
// z.isNaN == true
可用版本
用法四
init(_:)
声明
init(_ other: Float16)
参数
other
用于新实例的值。
详述
如有必要,other
的值会四舍五入为可表示的值。作为 other
传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。
let x: Float16 = 21.25
let y = Double(x)
// y == 21.25
let z = Double(Float16.nan)
// z.isNaN == true
可用版本
用法五
init(_:)
声明
init(_ other: Double)
参数
other
用于新实例的值。
详述
other
的值完全由新实例表示。作为 other
传递的 NaN 会导致另一个 NaN,而信号 NaN 值将转换为安静的 NaN。
let x: Double = 21.25
let y = Double(x)
// y == 21.25
let z = Double(Double.nan)
// z.isNaN == true
可用版本
相关用法
- Swift Double init(nan:signaling:)用法及代码示例
- Swift Double init(signOf:magnitudeOf:)用法及代码示例
- Swift Double init(exactly:)用法及代码示例
- Swift Double init(sign:exponent:significand:)用法及代码示例
- Swift Double init(integerLiteral:)用法及代码示例
- Swift Double init(floatLiteral:)用法及代码示例
- Swift Double infinity用法及代码示例
- Swift Double isZero用法及代码示例
- Swift Double isNaN用法及代码示例
- Swift Double isTotallyOrdered(belowOrEqualTo:)用法及代码示例
- Swift Double isEqual(to:)用法及代码示例
- Swift Double remainder(dividingBy:)用法及代码示例
- Swift Double significand用法及代码示例
- Swift Double truncatingRemainder(dividingBy:)用法及代码示例
- Swift Double -(_:_:)用法及代码示例
- Swift Double /(_:_:)用法及代码示例
- Swift Double ...(_:_:)用法及代码示例
- Swift Double -(_:)用法及代码示例
- Swift Double binade用法及代码示例
- Swift Double ...(_:)用法及代码示例
- Swift Double pi用法及代码示例
- Swift Double maximum(_:_:)用法及代码示例
- Swift Double negate()用法及代码示例
- Swift Double +(_:_:)用法及代码示例
- Swift Double formRemainder(dividingBy:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Double init(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。