C#: Как да открием коя стойност на текстовото поле е равна или най-близката до нула от група текстови полета/стойности?

Имам страхотна формула на Excel, която използвам, но искам да разпространя нещо малко по-съществено и издръжливо, а също и удобно за потребителя на моята група дизайнери по време на работа. За съжаление имам работа и с отрицателни числа, така че преминаването към минималната стойност няма да работи.

Така че, ако текстово поле1 каза 13, текстово поле2 каза 4 и текстово поле3 каза -1, текстово поле 3 ще светне или каквото и действие да избера да бъде извършено, тъй като -1 е най-близкото до нула.

Не че наистина помага, но формулата на Excel е така: =INDEX(A61:A78,MATCH(MIN(INDEX(ABS(A61:A78),0,1)),INDEX(ABS(A61:A78),0 ,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