【发布时间】:2010-10-12 21:21:36
【问题描述】:
在数据库中存储 nsdecimalnumbers 的最佳方式是什么?浮点、实数和双精度等数值类型已被淘汰,因为保持货币使用的精度很重要。
我考虑过的两种选择是字符串并存储两个整数,一个保存尾数,一个保存指数。后一种方法面临的挑战是,我没有看到一种简单的方法可以将尾数和指数从 nsdecimalnumber 中提取出来。我可以从 NSDecimalNumber 获得 NSDecimal,但尾数和指数属性似乎是私有的!也许我可以反转 number = (mantissa * 10^exponent),但是有没有更好的方法来做到这一点?
我的要求是我需要对数据库中的这个字段执行一些聚合求和操作。如果我存储为字符串,则执行此计算可能会更加困难。我仍然需要编写一个自定义函数来对数据库中的尾数和指数求和,所以它可能仍然很重。
编辑:我可以访问指数,但尾数以一种奇怪的方式保存...在调试器中戳它会发现它是一个 short(ints) 数组。
【问题讨论】:
-
你意识到 NSDecimal 是在 NSDecimal.h 中定义的,如果你在按住 cmd 的同时双击可见?它也在文档中列出,尽管它说这些字段是私有的。
-
是的,我知道我现在可以访问它们,但是尾数被保存为一个短整数数组。我猜这是 unsigned long long 的实现细节?如何可靠地从一组短整数中读取?
标签: objective-c ios4 nsdecimalnumber