0
私は価格をdouble
と扱ってはならず、2つの整数としてそれらを保存すべきだと読んだことがあります。スワイプで2つの整数で価格を保存する方法
たとえば、246.464
の入力がUITextField
にある場合、どのように2つの整数にする必要がありますか?
私は価格をdouble
と扱ってはならず、2つの整数としてそれらを保存すべきだと読んだことがあります。スワイプで2つの整数で価格を保存する方法
たとえば、246.464
の入力がUITextField
にある場合、どのように2つの整数にする必要がありますか?
2つの整数を忘れて、それをNSDecimalNumberとして保存してください。それはそのタスクのために特別に作成されたクラスです。
float
またはdouble
とは異なり、NSDecimalNumber
はデカード算術を使用しているため、デカードからバイナリへの変換時および反転時の精度の低下はありません。
let text = "246.464" // textField.text
let number = NSDecimalNumber(string: text)
多分、BIGの 'float'で正確な問題が見つかることがありますが、' double'の問題があるとは思えません。 – redent84
正確な問題が見つからないとはどういう意味ですか? 'var y = 0.1 + 0.1 + 0.1; print(y == 0.3) ' –
また、小数部分を1つの整数として表すことはできないことに注意してください。指数も必要です。例えば、 '0.1'と' 0.01'は両方とも '0'と' 1'で表現されるので、指数(それぞれ '1'と' 2')が必要です。あるいは、整数 '246464'を保存し、指数' 3'(10進数)を保存することもできます。これは、浮動小数点演算がやっていることと、NSDecimalNumberがやっていることです。 – Sulthan