我正在开发一款iPhone应用程序,想要代表金钱($)金额。我不能使用float因为它们会引入一定量的舍入错误。 我可以使用什么?
我正在考虑定义自己的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”类型吗?
答案 0 :(得分:27)
使用NSDecimalNumber。当然它有开销,但除非你能证明这是一个问题,否则你会喜欢它给你的准确性。
http://www.cimgf.com/2008/04/23/cocoa-tutorial-dont-be-lazy-with-nsdecimalnumber-like-me/ http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/Reference/Reference.html
答案 1 :(得分:8)
使用NSDecimalNumber
类。