Подтвердить что ты не робот

Значение было слишком большим или слишком маленьким для десятичной

У меня есть следующий фрагмент кода:

double shortfall = GetSomeNumber(); //3.3588548831176006E+29

if (shortfall > 0)
{
  returnValue = Convert.ToDecimal(shortfall);
}

Это генерирует указанную выше ошибку.

Может ли кто-нибудь помочь мне с ним?

4b9b3361

Ответ 1

Ну, это довольно понятно.

decimal.MaxValue - 79,228,162,514,264,337,593,543,950,335 - ваш номер больше этого.

Хотя decimal имеет более высокую точность, чем double, double имеет больший диапазон - он может обрабатывать очень, очень большие и очень, очень маленькие числа.

Теперь, если вы могли бы рассказать нам, что вы действительно пытаетесь сделать, мы могли бы попытаться найти решение... редко бывать, чтобы смешать double и decimal, если быть честным.

Ответ 2

Это означает, что возвращаемое значение не может быть преобразовано в десятичное, поскольку оно слишком велико.

Decimal значения могут быть между положительными 79,228,162,514,264,337,593,543,950,335 до отрицательных 79,228,162,514,264,337,593,543,950,335 - см. MSDN.

Double может обрабатывать гораздо большие числа - отрицательный 1.79769313486232e308 - положительный 1.79769313486232e308. Все они не будут конвертированы в Decimal.