指定的强制转换无效..如何解决此问题

时间:2011-04-07 07:32:26

标签: c#

我有以下功能

public object Convert(object value)
 {
    string retVal = string.Empty;
    int oneMillion = 1000000;
    retVal = ((double)value / oneMillion).ToString("###,###,###.###");
    return retVal;
 }

我正在调用

var result  = Convert(107284403940);

错误:“指定演员无效。”

如何修复...

注意:〜对象值可以是double,decimal,float,integer(32和64)..任何

是否可以在运行时进行类型转换?

2 个答案:

答案 0 :(得分:75)

使用Convert.ToDouble(value)而不是(double)value。需要object并支持您要求的所有类型! :)

此外,您的方法始终在上面的代码中返回string;我建议让方法表明,并给它一个更明显的名称(public string FormatLargeNumber(object value)

答案 1 :(得分:4)

如果您期望double, decimal, float, integer为什么不使用容纳所有十进制的那个(对于您正在查看的大多数数字,128位就足够了)。

而不是(double)value使用decimal.Parse(value.ToString())Convert.ToDecimal(value)