2011-06-14 52 views

回答

16

解決辦法有兩個:

  • 使用的int,始終美分(或你使用任何貨幣的最小可能分裂)保持貨幣價值的軌道。只使用整數計算。
  • 使用NSDecimalNumber,它確實十進制算術。

解決方案#1需要你美分,每當你做輸入或貨幣值的輸出美元之間的轉換,而解決方案#2可以梅西耶代碼(例如,你必須寫類似的[num1 decimalNumberByAdding:num2]代替num1 + num2添加兩個數字)。

我推薦解決方案#1,但請與您認爲最適合的人選擇。

+2

+1 - 另外,爲了全面理解爲什麼不使用浮點類型,請參閱David Goldberg的經典「每個計算機科學家應該知道的關於浮點運算的知識」: 2011-06-14 05:53:03

+0

也看到這個SO問題:[使用浮點數或小數的會計應用程序](http://stackoverflow.com/questions/61872/use-浮點或小數的會計應用程序美元金額) – 2011-06-14 06:39:47

+0

@ShermPendley - 鏈接無法正常工作。 – Moshe 2011-06-20 04:18:51