如何在Objective-C / iOS中表示金钱?

我正在开发一个iPhone应用程序,并且想要代表金钱($)金额。 我不能使用浮点数,因为它们引入了一定数量的舍入错误。 我可以使用什么?

我正在考虑定义我自己的Money类,并在内部存储美元和便士作为NSInteger。

@interface Money : NSObject { //$10.25 is stored as dollas=10 and pennies=25 NSInteger dollars; NSInteger pennies; } 

另一种可能的表示(更容易添加和相乘)将是使用单个NSInteger作为便士。

 @interface Money : NSObject { //$10.25 is stored as pennies=1025 NSInteger pennies; } 

你怎么看? 有没有我可以使用的“BigDecimal”types?

使用NSDecimalNumber。 确定它有开销,但除非你能certificate这是一个问题,否则你会爱上它给你的准确性。

http://www.cimgf.com/2008/04/23/cocoa-tutorial-dont-be-lazy-with-nsdecimalnumber-like-me/ http://developer.apple.com/documentation/Cocoa/Reference/基金会/class/ NSDecimalNumber_Class /参考/的reference.html

使用NSDecimalNumber类。