2016-06-01 45 views
0

我已經讀過,我不應該將價格看作double數字,我應該將它們存儲爲兩個整數。如何在swift中存儲兩個整數的價格

如果例如我有一個246.464類型的輸入UITextField我應該如何使它成爲兩個整數?

+0

也許你可以找到BIG'float'的精度問題,但我懷疑你會發現'double'的任何問題。 – redent84

+1

你是什麼意思,你不會發現精度問題? var y = 0.1 + 0.1 + 0.1; print(y == 0.3)' –

+1

也注意到你不能將小數部分表示爲只有一個整數,你還需要一個指數。例如,'0.1'和'0.01'將被表示爲'0'和'1',因此您需要指數(分別爲1和2)來區分它們。或者你可以保存整數'246464'並保存指數'3'(小數位數)。這正是浮點數學正在做什麼和'NSDecimalNumber'在做什麼。 – Sulthan

回答

5

忘記兩個整數,將其存儲爲NSDecimalNumber。這是專門爲該任務創建的課程。

floatdouble,NSDecimalNumber不同,它使用十進制算術,因此在十進制到二進制之間轉換時,精度不會降低,反之亦然。

let text = "246.464" // textField.text 
let number = NSDecimalNumber(string: text) 
相關問題