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