比较 NSDecimalNumber 不起作用?

Posted

技术标签:

【中文标题】比较 NSDecimalNumber 不起作用?【英文标题】:Comparing NSDecimalNumber won't work? 【发布时间】:2013-03-30 00:52:53 【问题描述】:

由于某种原因,比较逻辑无法正常工作......它不会比较两个 NSDecimalNumber 对象。有时有效,有时无效。真的很奇怪。 if 语句适用于某些编译,有时不适用。这是正确的做法吗?

数据来自一个 json 文件,它是一个 2 点十进制数,如下所示:63.32

为什么这不能正常工作?

NSError * error;
    NSDictionary * json = [NSJSONSerialization JSONObjectWithData:responceData options:kNilOptions error:error];
    NSArray * latestPrice = [json objectForKey:@"data"];
    NSLog(@"Latest price %@", latestPrice);

    NSNumber * value = [(NSDictionary*)[latestPrice objectForKey:@"last_offer"] objectForKey:@"display"];

    NSString * val = [[NSString alloc] initWithFormat:@"%@", value];
    NSString * valFinal = [val stringByTrimmingCharactersInSet:[NSCharacterSet symbolCharacterSet]];
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:valFinal];
    NSLog(@"%@", number);
    NSString * val2 = [[NSString alloc] initWithString:@"44.14"];
    NSDecimalNumber *number2 = [NSDecimalNumber decimalNumberWithString:val2];
    if(number2 >= number)
    NSLog(@"ds");
    

我需要将json值与具有相同小数点的本地值进行比较。

【问题讨论】:

NSDecimalNumber 是一个对象。您正在比较地址。阅读该类的规范以了解如何进行比较。 【参考方案1】:

NSDecimalNumber 是一个对象。您试图比较内存地址。 使用NSDecimalNumbercompare:实例方法。

if ([number compare:number2] == NSOrderedAscending)

NSDecimalNumber Class Reference

【讨论】:

太棒了!非常感谢。

以上是关于比较 NSDecimalNumber 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

NSDecimalNumber 比较失败

比较 NSDecimalNumber 和 NSNumber 得到错误的结果

为啥这个 DirectoryInfo 比较不起作用? [复制]

比较属性不起作用

JPA时间戳比较不起作用

php中的字符串比较不起作用