2017-03-11 8 views
0

数値が1,000を超えていて、カンマがある場合、カンマを取り除く方法、またはこの数値をDoubleに変換する方法その上で数学演算を実行できますか?Swift3でコンマを使用した数値の操作を実行する

今、私は次のコードを持っている:

let oldBFTally: Double = Double(plBFTally.text!)! 
let newBFTally: Double = round(1000 * (rawValue + oldBFTally)/1000) 

をこのコードは限りそれが持つように数が、1000の下にある。しかし、私はテキストとして番号をフォーマットだということであるとして、素晴らしい作品カンマ(すなわち:1,234.56)、私はその最初の行を実行しようとするたびに、それはエラー: "致命的なエラー:予期せず、オプション値をアンラッピングしながらnilが見つかりません"。

私はこの問題を回避するために何ができるでしょうか?

+0

なぜあなたがやっている数学を使用することができます元の番号の代わりに文字列を使用して文字列を作成しますか? – rmaddy

答えて

1

But, being that I am formatting the number as text, so that it has commas (ie: 1,234.56)

あなたは間違った方法で問題に取り組もうとしています。最初にこの文字列を生成している場合は、数値に対して数学演算を実行する場合は、文字列としてUIに表示してから、UIから逆に数値に戻そうとするべきではありません。それはあなたのプレゼンテーション層をあなたのデータモデルとして誤用しています。

UI間を行き来するのではなく、文字列を生成した元の値を使用してください。

1

@Jimは正しいです。あなたのテキストフィールドには、単にあなたの内部変数のテキスト表現が含まれている必要がありますので、あなたは、二重に戻って変換する必要はありませんが、参考のために、あなたは、フォーマットにNumberFormatter

import Foundation 

let formatter = NumberFormatter() 

formatter.numberStyle = .decimal 

if let number = formattter.number(from:"10,000") { 
    print(number.doubleValue) 
} 
関連する問題