gpt4 book ai didi

iphone - cocoa - 如果双倍失败?

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

我有一组像这样的 NSTimeIntervals:

NSArray *mySet = [NSArray arrayWithObjects:
[NSNumber numberWithDouble: time1], //
[NSNumber numberWithDouble: time2],
[NSNumber numberWithDouble: time3],
nil];

// suppose that at this time
// time1 = 0.00000
// time2 = 18.3200
// time3 = 21.6500

在我的代码中的某个时刻,我想测试 currentTime 是否大于或等于数组上的某个时间,所以我这样做了

// currentTime = 18.32 right now
for (int i=0; i<[mySet count]; i++) {
if (currentTime >= [[mySet objectAtIndex:i] doubleValue]) {
NSLog(@"%d...", i);
}
}

输出应该是“1...2...”但输出只是“1...”

i = 1时,它正在比较 18.32 和 18.32 并且无法识别该值等于或大于另一个值? WTF???

怎么会这样?

感谢您的帮助。

最佳答案

通常,在比较浮点值时,您需要确定一个值与另一个值的接近程度(epsilon 或误差范围),然后检查它们是否在此范围内。最简单的方法是将一个减去另一个,然后检查结果的绝对值是否小于或等于您的epsilon

伪代码:

 var values = [...];
var toCheck = ...;
var epsilon = 0.00001;

for (var i = 0; i < length(values); ++i)
if (abs(values[i] - toCheck) <= epsilon)
print "they are close enough"
end
end

关于iphone - cocoa - 如果双倍失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469527/

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