gpt4 book ai didi

iphone - 比较 NSNumber

转载 作者:行者123 更新时间:2023-12-03 21:03:16 25 4
gpt4 key购买 nike

用户输入一个数字( float 或整数),并且它必须大于下限。

这是从 UITextField 获取数字的代码:

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *currentNumber = [f numberFromString:self.textfield.text];
[f release];

下限通常为 0.1(lowerBound 是一个 NSNumber)

如果我有此代码并在文本字段中输入 0.1,则 isValid 仍为 YES

BOOL isValid = YES;
if ([currentNumber floatValue] < [self.lowerBound floatValue]) {
isValid = NO;
}

但是我认为这样做会更好:

BOOL isValid = YES;
if ([currentNumber compare:self.lowerBound] == NSOrderedAscending) {
isValid = NO;
}

但是我再次输入 0.1(并且 lowerBound 仍然是 0.1),if 语句的计算结果为 true(就好像 currentNumber 小于 self.lowerBound)。

代码在 0.11 及更高版本中按预期工作。我还有一个更高的界限:

BOOL isValid = YES;
if ([currentNumber compare:self.higherBound] == NSOrderDescending) {
isValid = NO;
}

这按预期工作,包括当我输入与 upperBound 相同的值时(大多数情况下为 10)

据我了解, NSNumber 上的 compare: 方法比较值而不是对象的地址,那么为什么它不能在下限上工作?

最佳答案

因为 float 并不精确 - 一个 NSNumber 中的 0.1 可能与另一个 NSNumber 中的 0.1 不同。

关于iphone - 比较 NSNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com