存储十进制数



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

我搜遍了整个互联网,但似乎没能找到。

答案可能很简单。

谢谢!

更新:

这里有一些数据

{

循环代码

nslog(保存);

save number 3.1415926535;

删除所有已存储的数据

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

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

尝试这样使用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"];

或者在您的psuedo代码中:

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 variableproperty类的指针

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

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

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

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

话虽这么说,NSDecimalNumber是相当冗长的。如果您可以使用原始类型(例如,以美分而不是美元进行计算),则可能更可取。

使用double。当需要存储它时,您可以获得如下数字:

NSNumber *number = @(myDouble);

将NSNumber改为双精度类型,

double myDouble = [number doubleValue];

最新更新