存储十进制数

时间:2013-04-30 21:20:23

标签: ios objective-c

我需要存储一个十进制数字,字符串,int或数字似乎都不是我想要的。我不能使用NSNumber,因为我需要以后能够更改它。

我搜索了整个互联网,但我似乎无法找到它。

答案可能很简单。

谢谢!

更新:

这里的某种数据

循环代码{

nslog(保存号码);

保存号码3.1415926535;

删除已存储的所有数据

//现在字符串不再存在了 }

我需要能够将这个数字保存在循环之外的“某种数据”中,因为当循环开始时,从循环创建的所有内容都将被删除。

3 个答案:

答案 0 :(得分:1)

尝试使用NSNumber,如下所示:

double myValue = 20.0;

NSNumber* number = [NSNumber numberWithDouble:myValue];

// Do something with NSNumber like write it to disk, put it in an array, dictionary whatever ....

// Then pull it back out
double myOldValue = [number doubleValue];

要在应用关闭后拉出双倍值(我将其解释为“背景”或“暂停”),请尝试在应用程序背景之前将其写入NSUserDefaults,然后将其拉出来当您的应用恢复时退出。

// Write a double to NSUserDefaults
[[NSUserDefaults standardUserDefaults] setDouble:myValue forKey:@"myDoubleValue"];

// Write an NSNumber to NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:number forKey:@"myNumberWithDoubleValue"];

// Extract double from NSUserDefaults
double myReallyOldDoubleValue = [[NSUserDefaults standardUserDefaults] doubleForKey:@"myDoubleValue"];

// Extract NSNumber from NSUserDefaults
NSNumber* myReallyOldNumberValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"myNumberWithDoubleValue"];

或者在你的伪代码中:

NSNumber *someValue = [NSNumber numberWithDouble:0.0];

some kind of data here
looping code {

    nslog(save number)

    someValue = [NSNumber numberWithDouble:3.1412];

    delete all data that has been stored
}

存储指向您的号码或instance variable或类property

的指针

答案 1 :(得分:0)

可以使用NSNumber,或者是十进制子类NSDecimalNumber。仅仅因为对象本身是不可变的并不意味着你不能改变给定变量指向的值。例如:

NSDecimalNumber *a = [NSDecimalNumber numberWithInt:2];
a = [a decimalNumberByAdding:[NSDecimalNumber numberWithInt:12]];
a = [a decimalNumberByDividing:[NSDecimalNumber numberWithDouble:2.3]];

这就像真正的一样,也是不可改变的。

double a = 2;
a = a + 12;
a = a / 2.3;

话虽如此,NSDecimalNumber非常冗长。如果你可以使用原始类型(比如用美分而不是美元进行计算),那可能更适合。

答案 2 :(得分:-1)

只需使用double即可。到了存储它的时候,你可以得到这样的数字:

NSNumber *number = @(myDouble);

将NSNumber更改为double,

double myDouble = [number doubleValue];