私は文字列、"$4,102.33"
をdoubleに変換する必要があります。これは常に米国です。私の唯一の方法は、$
と,
を取り除き、次にdoubleに変換するハックです。 NSFormatter
のように私は通貨に変換することができますし、それからはできません。 $
と,
を削除するだけではなく、組み込み関数か、より良い方法がありますか?それを二重に変換する前に?スウィフト変換通貨文字列をdoubleにする
ありがとうございました。
私は文字列、"$4,102.33"
をdoubleに変換する必要があります。これは常に米国です。私の唯一の方法は、$
と,
を取り除き、次にdoubleに変換するハックです。 NSFormatter
のように私は通貨に変換することができますし、それからはできません。 $
と,
を削除するだけではなく、組み込み関数か、より良い方法がありますか?それを二重に変換する前に?スウィフト変換通貨文字列をdoubleにする
ありがとうございました。
NumberFormatter
は、文字列に変換できます。また、Double
は、それが2を基準にしているため、正確な数値を表すことができません。Decimal
を使用すると、速度は遅くなりますが安全です。指定した通貨の文字列からのNSNumberに変換するには
let str = "$4,102.33"
let formatter = NumberFormatter()
formatter.numberStyle = .currency
if let number = formatter.number(from: str) {
let amount = number.decimalValue
print(amount)
}
簡単です:
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "en_US")
let number = formatter.number(from: string)
ダブルとして、またはDECIMAL(preferred)は、その後、直接であるとして、あなたの番号を取得するには、次の
let doubleValue = number?.doubleValue
let decimalValue = number?.decimalValue
サイドノート、通貨に 'Double'を使わないでください:http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency – Alexander
' NSNumberFormatter'は簡単にその文字列を変換します麻痺するあなたが正しく設定していればあなたの質問に 'NSNumberFormatter'の使用を表示してください。 – rmaddy
Argh - 私は.stringメソッドしか見ていませんでした。 .numberメソッドがあることを認識していませんでした。 :-( – user441058