1

尝试存储货币,可以是负数/正数,带小数。我做了很多搜索,发现在模型中使用 Decimal 类型是最好的方法。这似乎没有签名的想法。我看到你可以存储一个有符号整数(没有小数)。但我找不到任何有关存储带符号十进制数的信息。

由于我没有找到任何东西,我猜你不能。
如果是这样,您将如何存储此类信息?创建一个布尔属性来描述金额是否为 neg/pos?

4

1 回答 1

2

CoreData 中的“Decimal”类型使用 SQLite“Decimal”存储类,它由“Real”存储类支持。

这将支持商店级别的负数:

sqlite> .tables
test
sqlite> .schema
CREATE TABLE test (pk integer primary_key, d double, f float, r real);
sqlite> insert into test (d,f,r) values (-1.0, -1.5, -1.252853);
sqlite> select * from test;
|-1.0|-1.5|-1.252853

如您所见,SQLite 正确存储了该值。

在您的目标 C 代码中,您将使用 NSNumber 类,可以使用以下代码使用负小数对其进行实例化:

[NSDecimalNumber numberWithDouble:-1.57];
[NSDecimalNumber numberWithFloat:-1.57];
于 2012-05-09T17:56:51.830 回答