ios - NSDecimal 等于 NSDecimalNumber 值?

标签 ios objective-c nsdecimalnumber nsdecimal

我正在寻找一种有效的方法来将 NSDecimalNumberNSData 缓冲区中的其他数据一起保存。

我还没有找到直接从 NSDecimalNumber 执行此操作的方法。 但是,很容易将其转换为:

NSDecimal value = [theDecimalNumber decimalValue];

并且在内存中传输NSDecimal并不难(20字节)。

但是,我的问题是:NSDecimalNumberNSDecimal 值是否完全相同?

因为他们的声明有一些差异(ExternalRefCount ?):

@interface NSDecimalNumber : NSNumber {
@private
    signed   int _exponent:8;
    unsigned int _length:4;
    unsigned int _isNegative:1;
    unsigned int _isCompact:1;
    unsigned int _reserved:1;
    unsigned int _hasExternalRefCount:1;
    unsigned int _refs:16;
    unsigned short _mantissa[0]; /* GCC */
}

typedef struct {
    signed   int _exponent:8;
    unsigned int _length:4;     // length == 0 && isNegative -> NaN
    unsigned int _isNegative:1;
    unsigned int _isCompact:1;
    unsigned int _reserved:18;
    unsigned short _mantissa[NSDecimalMaxSize];
} NSDecimal;

是否可以在两种类型之间执行多次传输而不损失任何精度?

最佳答案

您是否尝试过使用 NSArchiver 类方法?

NSData *data=[NSArchiver archivedDataWithRootObject:yourNumber];

关于ios - NSDecimal 等于 NSDecimalNumber 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169131/

相关文章:

objective-c - NSDecimalFormatter 和货币符号 : $US instead of $

objective-c - 如何将 NSDecimalNumber 转换为 NSNumber

ios - 核心数据不保存我的数据

ios - 如何从委托(delegate)方法 cellForRowAtIndexPath : 内部调用的方法编辑完成 block 中的 UITableViewCell

objective-c - 让 Sprite 在屏幕上随机移动

ios - 命名空间 SIGNAL,代码 0x5,带有 EXC_BREAKPOINT (SIGTRAP)

ios - 将 NSDecimalNumber 转换为 NSString 时,NSNumberFormatter 舍入不正确

ios - 用于使用 Makefile 的第三方库的 CocoaPods

ios - 以编程方式添加的 UIView 的自动布局

ios - 苹果是否提供任何媒体传输控件以在我的应用程序中使用