C # Почему десятичная математика возвращает ноль?

У меня есть метод в проекте ASP.net MVC, который должен вытягивать сумму некоторых значений из некоторых списков, добавлять их вместе, а затем умножать их на значение. Списки извлекаются из таблицы SQL, сохраняются как десятичные значения, и когда я получаю Sum значений, используя Linq, они являются десятичными значениями. Но когда я пытаюсь умножить или добавить значения друг к другу, результат всегда равен нулю.

private Decimal LLR = 0.00284M;
private Decimal GetStandardReserveForLoan(List<Loan> loans, List<LineOfCredit> locs)    
{
    decimal l = locs.Sum(x => x.MaxCredit ?? 0M);
    decimal loan = loans.Sum(x => x.LoanAmount ?? 0M);
    decimal subtotal = loan + l;
    decimal total = subtotal * LLR;
    return total;
}

Когда я помещаю точку останова на decimal total =линию и смотрю на местных жителей, subtotal = 0и total = 0. Я могу даже зайти в ближайшее окно и добавить loan + lвместе и 17500.00, и размножаться (loan + l) * LLRи получать 49.7.

Почему я могу получить правильные значения в непосредственном окне, но метод не вернет правильное значение?

c#,

-1

Ответов: 2


1

Входные значения, которые вы передаете Sum(), вероятно, пусты. Из Sum() документации :

Метод Sum (IEnumerable) возвращает ноль, если источник не содержит элементов.


0

Я исправил вычисление, добавив явную десятичную точку к возвращаемому значением nullable loan, изменив строку следующим образом:

decimal loan = loans.Sum(x => x.LoanAmount ?? 0.00M);

Теперь метод корректно возвращает 49.700000 для меня.

C #,
Похожие вопросы