gpt4 book ai didi

c# - 从给定的整数数组中找到最接近的整数值,四舍五入

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:45 28 4
gpt4 key购买 nike

我试图找出使用整数存储在列表中的其他两个数字之间的任何n在整数列表中找到最接近的值ROUNDED DOWN的最佳方法。在这种情况下,所有整数都将始终是无符号的,以防万一。

假设如下:


列表始终从0开始
该列表始​​终按ASC排序
列表中的所有整数都是无符号的(不需要Math.Abs
用于比较的数字始终是无符号的


例如:

List<int> numbers = new List<int>() { 0, 2000, 4000, 8000, 8500, 9101, 10010 };
int myNumber = 9000;
int theAnswer; // should be 8500

for (int i = 0; i < numbers.Count; i++) {
if (i == numbers.Count - 1) {
theAnswer = numbers[i];
break;
} else if (myNumber < numbers[i + 1]) {
theAnswer = numbers[i];
break;
}
}


前面的代码示例可以正常运行。

有没有更好,更简洁的方法呢?

最佳答案

您可以使用List<T>.BinarySearch而不是依次枚举list的元素。

List<int> numbers = new List<int>() { 0, 2000, 4000, 8000, 8500, 9101, 10010 };
int myNumber = 9000;

int r=numbers.BinarySearch(myNumber);
int theAnswer=numbers[r>=0?r:~r-1];

关于c# - 从给定的整数数组中找到最接近的整数值,四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969423/

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