如何将我的数组中最近的浮点数移到我选择的浮点数?这是我的阵列:
[1.20, 1.50, 1.75, 1.95, 2.10]
例如,如果我的浮点数是1.60
,我想生成浮动1.50
。
有什么想法吗?提前谢谢!
答案 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);