在数组中查找最近的float

时间:2014-11-26 14:31:03

标签: ios objective-c iphone arrays ipad

如何将我的数组中最近的浮点数移到我选择的浮点数?这是我的阵列:

[1.20, 1.50, 1.75, 1.95, 2.10]

例如,如果我的浮点数是1.60,我想生成浮动1.50

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过对数组进行排序并找到最近的数组来完成。

为此,您可以使用sortDescriptors,然后您的算法将会运行。

即使你可以循环,首先假设为所需的值并存储最小的绝对(abs())差异,如果下一个差异小于保持该值。

工作样本,但是你需要处理其他条件,比如两个相似的值,或者你的值只是介于两个值之间,如2位于1和3之间。

NSArray *array = @[@1.20, @1.50, @1.75, @1.95, @2.10];

double my = 1.7;
NSNumber *nearest = array[0];

double diff = fabs(my - [array[0] doubleValue]);
for (NSNumber *num in array) {
    double d = [num doubleValue];
    if (diff > fabs(my - d) ) {
        nearest = num;
        diff = my - d;
    }
}

NSLog(@"%@", nearest);
相关问题