Указанный приказ недействителен. Как решить эту проблему
У меня есть следующая функция
public object Convert(object value)
{
string retVal = string.Empty;
int oneMillion = 1000000;
retVal = ((double)value / oneMillion).ToString("###,###,###.###");
return retVal;
}
Я вызываю как
var result = Convert(107284403940);
Ошибка: "Указанный приведение недействительно."
как исправить...
Примечание: ~ значение объекта может быть двойным, десятичным, float, integer (32 и 64).. ничего
Можно ли выполнить приведение типов во время выполнения?
Ответы
Ответ 1
Используйте Convert.ToDouble(value)
, а не (double)value
. Он принимает object
и поддерживает все типы, которые вы просили!:)
Кроме того, ваш метод всегда возвращает string
в приведенном выше коде; Я бы рекомендовал, чтобы метод указывал так, и дайте ему более очевидное имя (public string FormatLargeNumber(object value)
)
Ответ 2
Если вы ожидаете double, decimal, float, integer
, почему бы не использовать ту, которая вмещает все, а именно десятичная (для большинства чисел, которые вы ищете) достаточно 128 бит.
вместо (double)value
используйте decimal.Parse(value.ToString())
или Convert.ToDecimal(value)