3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
(改編自我對(duì)其他答案的評(píng)論。)
是的你應(yīng)該。僅當(dāng)您不需要代表半分錢時(shí),整數(shù)便士才能起作用。如果發(fā)生這種情況,您可以將其更改為半美分,但是如果您需要代表四分之一美分或八分之一美分呢?
唯一合適的解決方案是NSDecimalNumber(或類似的東西),它將問題推遲到10 ^ -128¢(即
0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001¢)。
(另一種方法是任意精度算術(shù),但是需要一個(gè)單獨(dú)的庫,例如GNU MP Bignum庫。GMP在LGPL之下。我從未使用過該庫,也不知道它是如何工作的,所以我無法說出它對(duì)您的效果如何。)
[編輯:顯然,至少有一個(gè)人布拉德·拉爾森(Brad Larson)認(rèn)為我在這個(gè)答案的某個(gè)地方談?wù)摱M(jìn)制浮點(diǎn)數(shù)。我不是。]
添加回答
舉報(bào)