Условный, если не возвращается, как ожидалось - PullRequest
0 голосов
/ 17 марта 2020
        for (int i = 0; i < iMatrix1.Count(); i++)
        {
           if (Math.Abs(iMatrix1[i]) > 1E-20 & Math.Abs(iMatrix1[i]) < 0.0001) { oArrayList.Add(0); }
            else { oArrayList.Add(iMatrix1[i]); }
        }

Может быть, это просто усталые глаза ... Но я не получаю ожидаемого результата, здесь. Я пытаюсь устранить ошибочные числа, которые выходят за нижнюю границу для данного допуска. (имеется в виду, что если они выходят за пределы диапазона, который я пытаюсь определить, они должны обрабатываться как ноль)

По некоторым причинам, это также изменение чисел, которые находятся за пределами этой нижней границы.

Я уверен, что это просто глупая ошибка. Пожалуйста, поставьте меня прямо.

Мое возвращаемое значение для iMatrix [i] = -0.000000000000000055

И понятно, 0.00000000000000000001 <| -0.000000000000000055 | <.00001 </p>

Опять же, я уверен, что это просто глупая оплошность ... Но это убивает меня, на данный момент.

1 Ответ

0 голосов
/ 22 апреля 2020

Mhan7, если я правильно вас понял, вы пытаетесь это сделать?

var a = 0.00000000000000000001;
var b = -0.000000000000000055;
var c = .00001;

Console.WriteLine($"a={c},b={b},c={c} | a < b = { a < Math.Abs(b)} | c > b = { c > Math.Abs(b)}");

if (Math.Abs(b) > a & Math.Abs(b) < c) 
{ 
    Console.WriteLine("Hello, World!");
}

Это работает на вашем компьютере - я использовал те же условия, что и у вас. Похоже, что вышеприведенное подтверждает, что ваш код верен, иначе возвращает «Hello, World», потому что - как вы сказали выше:

a

...