我正在寻找一种有效的方法来将 NSDecimalNumber
与 NSData
缓冲区中的其他数据一起保存。
我还没有找到直接从 NSDecimalNumber
执行此操作的方法。
但是,很容易将其转换为:
NSDecimal value = [theDecimalNumber decimalValue];
并且在内存中传输NSDecimal
并不难(20字节)。
但是,我的问题是:NSDecimalNumber
和 NSDecimal
值是否完全相同?
因为他们的声明有一些差异(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/