Swift 標準ライブラリ >     Double   >   init(_:)
イニシャライザ
init(_:)
与えられた文字列から新しいインスタンスを作成します。
宣言
パラメータ
text | Double インスタンスに変換すべき入力文字列。text に無効な文字があるか、無効な形式の場合、結果は nil になります。 |
議論
text として渡される文字列は、10 進数または 16 進数形式の実数、または無限大 (infinity) および NaN ("not a number"、数字でない) の特殊浮動小数点数を表します。
与えられた文字列は、プラス記号またはマイナス記号文字(+ または - )で始まることがあります。これらの表現のそれぞれに許される形式は、以下のとおりです。
- 10 進数値 には、小数点を含む 10 進値のシーケンスである仮数が含まれます。
- 16 進数値 には、0X または 0x の後に有効数字の 16 進数のシーケンスが続きます。有効数字には小数点が含まれることがあります。
- 無限大 の値には、文字列 "inf" または "infinity" のいずれかが含まれ、大文字と小文字は区別されません。
- NaN の値には文字列 "nan" が含まれ、大文字と小文字は区別されません。
let c = Double("-1.0") // c == -1.0 let d = Double("28.375") // d == 28.375
また、10 進値は、有効数字の後に続く指数を含み、有効数字が乗算されるべき 10 の累乗を示します。含まれる場合、指数は単一の文字 e または E で区切られ、オプションのプラス記号またはマイナス記号文字と小数点以下の桁のシーケンスで構成されます。
let e = Double("2837.5e-2") // e == 28.375
let f = Double("0x1c.6") // f == 28.375
16進数値には、有効数字の後の指数も含まれ、有効数字が乗算されるべき 2 の累乗を示します。含まれる場合、指数は単一の文字、p または P で区切られ、オプションのプラス記号またはマイナス記号文字と小数点以下の十進の桁のシーケンスで構成されます。
let g = Double("0x1.c6p4") // g == 28.375
let i = Double("inf") // i == Double.infinity let j = Double("-Infinity") // j == -Double.infinity
let n = Double("-nan") // n?.isNaN == true // n?.sign == .minus
NaN 値には、"nan" キーワードが続くカッコ内のペイロードも含みます。ペイロードは、10 進数のシーケンス、または 0X または 0x の文字の後に 16 進数のシーケンスが続きます。ペイロードに他の文字が含まれている場合は無視されます。ペイロードの値が Double.nan のペイロードとして格納できる値より大きい場合、最下位ビットが使用されます。
let p = Double("nan(0x10)") // p?.isNaN == true // String(p!) == "nan(0x10)"
他の書式や追加の文字を text として渡すと、結果は nil になります。たとえば、以下の変換は nil になります。
Double(" 5.0") // Includes whitespace Double("±2.0") // Invalid character Double("0x1.25e4") // Incorrect exponent format