将 NSNumber 与固定值进行比较?

Posted

技术标签:

【中文标题】将 NSNumber 与固定值进行比较?【英文标题】:compare a NSNumber with a fixed value? 【发布时间】:2010-03-11 19:51:07 【问题描述】:

有没有更好的方法来比较一个 NSNumber 和一个固定的值,只是感觉有点笨拙。

if([myNumber isEqualToNumber:[NSNumber numberWithInt:0]]) NSLog(@"Zero");

我知道我可以使用 -compare 但它看起来几乎一样......

加里

【问题讨论】:

Obj-C 中的一切都感觉有点笨拙。 使用文字,还不错:[NSNumber isEqualToNumber:@0] 【参考方案1】:

if ([myNumber intValue] == 0) 怎么样? (显然是 )。

【讨论】:

我注意到这只有在已知数字是整数时才有效。值为 0.4 的 NSNumber 的 intValue 将为 0。【参考方案2】:

NSNumber 对象可以包含整数、浮点数、双精度数等。 Ben 的方法(与 NSNumberintValue 相比)非常快速且易于阅读,但只有当您可以保证 myNumber 始终在 int 的范围内时它才能正常工作(并且总是会是,即使在未来的代码更改之后)。

因此,如果您不知道myNumber 的确切类型,您的方法实际上会更好。

// This will work regardless if myNumber is an int, double etc.
[myNumber isEqualToNumber:[NSNumber numberWithInt:0]]

如果与较大的固定数字或浮点数相比,无论如何您都必须走这条路。 此外,如果您尝试创建类型错误的 NSNumber,最新版本的 Xcode 会正确警告您,这有助于及早发现问题:

【讨论】:

另一个微妙的错误来源是子类NSDecimalNumber,它可以从intValue 产生错误的结果。 +1

以上是关于将 NSNumber 与固定值进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

python任务2

机器学习数据预处理之缺失值:固定值填充

Object - C 值对象 NSNumber和NSValue

UISlider 固定位置以保存值?

哈希值是啥意思?

[0,1]上的定点表示与浮点表示