我正在构建一个需要管理资金数据类型的应用程序。
我是 Obj-c 的新手,所以我看不到 NSDecimalNumber 的使用。
例如,在我的单元测试中我这样做:
@interface SamplePerson : NSObject {
NSString *name;
NSDate *birthDate;
NSInteger size;
NSNumber *phone;
NSDecimal balance;
BOOL *isOk;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSDate *birthDate;
@property (nonatomic) NSInteger size;
@property (nonatomic, retain) NSNumber *phone;
@property (nonatomic) NSDecimal balance;
@property (nonatomic) BOOL *isOk;
--
o.balance = [NSDecimalNumber decimalNumberWithDecimal: [[NSNumber numberWithLong: 12.5] decimalValue]];
但收到警告:
警告:从不同的 Objective-C 类型传递“save:”的参数 1
总的来说,我发现这个问题比预期的更复杂。我可以使用整数进行破解,但在我 10 多年的 Foxpro、Delphi、.NET、Python 编码中我从来没有这样做过……做这种工作从来没有遇到过问题。
无论如何,我想知道如何做到这一点。我阅读了网络,但只找到了与上面相同的代码和诸如“使用 NSDecimalNumber 或被杀!”之类的信息。
我想知道如何:
- 评估简单值,例如 12.5
- 简单的数学
- 如何从 sqlite 存储和加载。
谢谢。
(顺便说一句:存在解决这个问题的库或实用程序吗?这听起来像是一个常见的头痛,对吧?)
您收到该警告的原因是因为您将余额声明为原始 NSDecimal,而不是 NSDecimalNumber *。看一眼这个问题 https://stackoverflow.com/questions/421463/should-i-use-nsdecimalnumber-to-deal-with-money至于为什么应该使用 NSDecimalNumber。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)