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

У меня есть следующая часть кода:

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

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

Это генерирует вышеупомянутую ошибку.

Кто-либо может помочь мне с ним?

19
задан Oded 5 August 2010 в 10:23
поделиться

2 ответа

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

decimal.MaxValue is 79,228,162,514,264,337,593,543,950,335 - ваше число больше этого.

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

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

26
ответ дан 30 November 2019 в 03:33
поделиться

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

Десятичные значения могут быть от положительных 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. Не все они будут преобразованы в десятичный формат.

11
ответ дан 30 November 2019 в 03:33
поделиться