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

Указанный приказ недействителен. Как решить эту проблему

У меня есть следующая функция

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).. ничего

Можно ли выполнить приведение типов во время выполнения?

4b9b3361

Ответ 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)