У меня есть следующая часть кода:
double shortfall = GetSomeNumber(); //3.3588548831176006E+29
if (shortfall > 0)
{
returnValue = Convert.ToDecimal(shortfall);
}
Это генерирует вышеупомянутую ошибку.
Кто-либо может помочь мне с ним?
Ну, это довольно понятно.
decimal.MaxValue
is 79,228,162,514,264,337,593,543,950,335 - ваше число больше этого.
Хотя decimal
имеет более высокую точность, чем double
, double
имеет больший диапазон - он может обрабатывать очень, очень большие и очень, очень маленькие числа.
Теперь, если бы вы могли сказать нам, что вы действительно пытаетесь сделать, мы могли бы попытаться помочь найти решение ... редко бывает хорошей идеей смешивать double
и 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. Не все они будут преобразованы в десятичный формат.