С#: как определить, какое значение текстового поля равно или ближе всего к нулю из группы текстовых полей/значений?

У меня есть отличная формула Excel, которую я использую, но я хочу распространять что-то более существенное и долговечное, а также удобное для моей группы дизайнеров на работе. К сожалению, я также имею дело с отрицательными числами, поэтому использование минимального значения не сработает.

Таким образом, если в текстовом поле 1 указано 13, в текстовом поле 2 указано 4, а в текстовом поле 3 указано -1, загорится текстовое поле 3 или будет выполнено любое другое действие, которое я выбрал, поскольку -1 ближе всего к нулю.

Не то, чтобы это действительно помогало, но формула Excel выглядит так: ,1),0))

Спасибо за любую помощь!


person saintj    schedule 02.09.2010    source источник


Ответы (3)


Вот метод "удовольствия с LINQ"

Func<string, bool> isDecimal = s => { decimal temp; return decimal.TryParse(s, out temp);};
TextBox closestToZero =
    (from tb in this.Controls.OfType<TextBox>()
        where isDecimal(tb.Text)
        orderby Math.Abs(decimal.Parse(tb.Text))
        select tb)
        .FirstOrDefault();

if (closestToZero != null)
    MessageBox.Show(closestToZero.Text);
person Anthony Pegram    schedule 02.09.2010

Перебирайте текстовые поля, вычисляйте абсолютное значение каждого числа в каждом поле и отслеживайте наименьшее из увиденных чисел, а также индекс текстового поля, в котором оно было замечено. Попробуйте найти абсолютное значение в Math.Abs().

person Mark LeMoine    schedule 02.09.2010

Вы можете просто перебирать текстовые поля, сохраняя минимальное значение, найденное до сих пор, и связанное с ним текстовое поле по мере продвижения.

person EMP    schedule 02.09.2010
comment
Спасибо, что напомнили мне, я только что добавил это редактирование: к сожалению, я также имею дело с отрицательными числами, поэтому использование минимального значения не сработает. - person saintj; 02.09.2010
comment
Итак, ориентируйтесь на минимальное абсолютное значение. Основная техника все еще работает. - person mjfgates; 02.09.2010