decimalNumberByAdding 似乎对我不起作用?
decimalNumberByAdding doesn't seem to work for me?
我已经声明了以下变量:
NSDecimalNumber *gross_total = 0;
NSDecimalNumber *net_total = 0;
int *checks = 0;
NSString *current_check;
我试图循环遍历每个 JSONElement 以将所有值加在一起以接收一个总计,我称之为 'gross_total'
for (int i = 0; i < TransactionArray.count; i++)
{
NSDictionary *jsonElement = TransactionArray[i];
NSDecimalNumber *gross = [NSDecimalNumber decimalNumberWithString:jsonElement[@"tran_value"]];
gross_total = [gross_total decimalNumberByAdding:gross];
// Accumulate if this is part of the previous check or a new one, add to INT Value for Check Count.
if (jsonElement[@"tran_check"] == current_check){
// DO NOTHING
}
else{
//ADD TO THE CHECK COUNT
checks++;
}
current_check = jsonElement[@"tran_check"];
}
使用断点,我发现 'gross' 从 3.4 的第一个 JSONElement 中获取了一个值,这很好,但是当它尝试使用 decimalNumberByAdding 函数来累积 'gross_total' 值时未传递给 'gross_total'.
我看不出我做错了什么,需要一些帮助吗?
NSDecimalNumber
是一个对象。您不能通过简单地分配文字标量数字来声明它。
可以声明值为零的NSDecimalNumber
NSDecimalNumber *gross_total = [NSDecimalNumber zero];
我已经声明了以下变量:
NSDecimalNumber *gross_total = 0;
NSDecimalNumber *net_total = 0;
int *checks = 0;
NSString *current_check;
我试图循环遍历每个 JSONElement 以将所有值加在一起以接收一个总计,我称之为 'gross_total'
for (int i = 0; i < TransactionArray.count; i++)
{
NSDictionary *jsonElement = TransactionArray[i];
NSDecimalNumber *gross = [NSDecimalNumber decimalNumberWithString:jsonElement[@"tran_value"]];
gross_total = [gross_total decimalNumberByAdding:gross];
// Accumulate if this is part of the previous check or a new one, add to INT Value for Check Count.
if (jsonElement[@"tran_check"] == current_check){
// DO NOTHING
}
else{
//ADD TO THE CHECK COUNT
checks++;
}
current_check = jsonElement[@"tran_check"];
}
使用断点,我发现 'gross' 从 3.4 的第一个 JSONElement 中获取了一个值,这很好,但是当它尝试使用 decimalNumberByAdding 函数来累积 'gross_total' 值时未传递给 'gross_total'.
我看不出我做错了什么,需要一些帮助吗?
NSDecimalNumber
是一个对象。您不能通过简单地分配文字标量数字来声明它。
可以声明值为零的NSDecimalNumber
NSDecimalNumber *gross_total = [NSDecimalNumber zero];