1. ホーム
  2. スイフト

[解決済み】Swift - StringをDoubleに変換する方法

2022-04-01 05:35:14

質問

BMIのプログラムをswiftで書こうとしています。 StringをDoubleに変換する方法を教えてください。

Objective-Cでは、このようにできます。

double myDouble = [myString doubleValue];

しかし、Swift言語でこれを実現するにはどうしたらいいのでしょうか?

どのように解決するのですか?

Swift 4.2+ 文字列をダブルに変換する

Stringと数値型(Double、Float、Int)間の変換には、新しい型初期化子を使用する必要があります。これは、正しい値を持つ Optional 型 (Double?) を返すか、String が数値でない場合は nil を返します。

NSString doubleValueプロパティは、値が変換できない場合(すなわち、不正なユーザー入力)、0を返すので、推奨されません。

let lessPrecisePI = Float("3.14")

let morePrecisePI = Double("3.1415926536")
let invalidNumber = Float("alphabet") // nil, not a valid number

if/letを使用して値をアンラップして使用します。

if let cost = Double(textField.text!) {
    print("The user entered a value price of \(cost)")
} else {
    print("Not a valid number: \(textField.text!)")
}

フォーマットされた数値や通貨の変換は NumberFormatter クラスがあります。

let formatter = NumberFormatter()
formatter.locale = Locale.current // USA: Locale(identifier: "en_US")
formatter.numberStyle = .decimal
let number = formatter.number(from: "9,999.99")

通貨フォーマット

let usLocale = Locale(identifier: "en_US")
let frenchLocale = Locale(identifier: "fr_FR")
let germanLocale = Locale(identifier: "de_DE")
let englishUKLocale = Locale(identifier: "en_GB") // United Kingdom
formatter.numberStyle = .currency

formatter.locale = usLocale
let usCurrency = formatter.number(from: "$9,999.99")

formatter.locale = frenchLocale
let frenchCurrency = formatter.number(from: "9999,99€")
// Note: "9 999,99€" fails with grouping separator
// Note: "9999,99 €" fails with a space before the €

formatter.locale = germanLocale
let germanCurrency = formatter.number(from: "9999,99€")
// Note: "9.999,99€" fails with grouping separator

formatter.locale = englishUKLocale
let englishUKCurrency = formatter.number(from: "£9,999.99")

続きを読む String 型から Double 型への変換 (および通貨変換) についてのブログ記事 .