【发布时间】:2021-05-31 10:30:37
【问题描述】:
我要做的是获取一组数字,这些数字逐渐变大,确定我可以四舍五入的最高数字。我不确定这是否有意义,我举个例子。请记住,为了解释,我将数字变得更简单,删除最后一个数字是行不通的。我使用的数组有 100 个数字,数百万。
int[] breakpoint = new int[] {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
110, 120, 130, 140, 150, 160, 170, 180, 190, 200};
int totalValue = 153;
int valueDisplayed;
//???
label.Text = valueDisplayed.toString();
所以在这种情况下我想要返回一个值 15(数组中项目的索引),这样我就可以显示该值(例如使用标签)。当然必须有一个简单的方法来做到这一点?我在任何地方都找不到答案。
【问题讨论】:
-
我不完全确定您所说的“向下取整”是什么意思。究竟是什么四舍五入,15 是从哪里来的?
-
而不是试图找到。一个现成的答案,只是尝试解决问题。最简单的解决方案是迭代直到找到一个大于目标的数字,然后检查前一个以找到最接近的数字。当然有更优雅或更快的解决方案,但这可能足以开始
-
the highest one i can round down to到底是什么意思?什么是 totalValue,为什么要从 153 变为 15?只能显示 2 位数字吗? -
15 将是数组中的第 15 个数字。通过向下舍入,我的意思是 totalValue 将向下舍入到数组中最接近的数字。例如,如果 totalValue 为 19,它仍会舍入为 10,即 1。
-
对于中等数量的排序数据,您可以使用二进制搜索 - 从“中间”数字开始并检查它与目标相比是否更大或更小。如果它更大,请检查之前的数字,看看它是否是您想要的。否则,取左半边或右半边,然后再试一次