Значение было слишком большим или слишком маленьким для десятичной
У меня есть следующий фрагмент кода:
double shortfall = GetSomeNumber(); //3.3588548831176006E+29
if (shortfall > 0)
{
returnValue = Convert.ToDecimal(shortfall);
}
Это генерирует указанную выше ошибку.
Может ли кто-нибудь помочь мне с ним?
Ответы
Ответ 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.