2016-06-01 5 views
0

私は価格をdoubleと扱ってはならず、2つの整数としてそれらを保存すべきだと読んだことがあります。スワイプで2つの整数で価格を保存する方法

たとえば、246.464の入力がUITextFieldにある場合、どのように2つの整数にする必要がありますか?

+0

多分、BIGの 'float'で正確な問題が見つかることがありますが、' double'の問題があるとは思えません。 – redent84

+1

正確な問題が見つからないとはどういう意味ですか? 'var y = 0.1 + 0.1 + 0.1; print(y == 0.3) ' –

+1

また、小数部分を1つの整数として表すことはできないことに注意してください。指数も必要です。例えば、 '0.1'と' 0.01'は両方とも '0'と' 1'で表現されるので、指数(それぞれ '1'と' 2')が必要です。あるいは、整数 '246464'を保存し、指数' 3'(10進数)を保存することもできます。これは、浮動小数点演算がやっていることと、NSDecimalNumberがやっていることです。 – Sulthan

答えて

5

2つの整数を忘れて、それをNSDecimalNumberとして保存してください。それはそのタスクのために特別に作成されたクラスです。

floatまたはdoubleとは異なり、NSDecimalNumberはデカード算術を使用しているため、デカードからバイナリへの変換時および反転時の精度の低下はありません。

let text = "246.464" // textField.text 
let number = NSDecimalNumber(string: text) 
関連する問題