有一段程序,通过逐步执行发现在执行这样一句代码时出现异常。
 
this._Money = (float)IncomeDateBaseValue[1]; 其中_Money 为float型,IncomeDateBaseValue[1]为object型,在类型转换时出现异常,如果把_Money的类型改成double型 代码改成: this._Money = (double)IncomeDateBaseValue[1]; 这样就不会出现异常,实现预定功能正常。为什么?在线等!

解决方案 »

  1.   


    this._Money = Convert.ToSingle(IncomeDateBaseValue[1]); 看看..
      

  2.   

    是否经过计算超出了float的范围
      

  3.   


    可以,没有出现异常!运行正确。是不是c#里浮点型强制转换不用(float),而用Convert.ToSingle()?
      

  4.   

    用ToString转换后再试试看行不
      

  5.   

    感觉C#里面(float)强制转换不太好用哦,也不清楚到底什么原因,
    可以用float.Parse()或者Convert.To...之类的
      

  6.   

    System.Single.TryParse(IncomeDateBaseValue[1].ToString(),out this._Money);
      

  7.   

    c#里面的带小数点的玩意缺省为double类型,你那个要转换为float实际上是需要两步转换,一步是拆箱为double,而后类型转换到float。.net实现者偷懒或者故意这样来做滴你这样写就OK了
    this._Money = (float)(double)IncomeDateBaseValue[1]; 
      

  8.   

    如果一个object本身是double,拆箱为其他类型当然会出错。如果确认IncomeDateBaseValue[1]是double,可以这样做:
    this._Money = (float)(double)IncomeDateBaseValue[1]; 而只所以Convert.ToSingle(object)不会出错,是因为object先被转换为IConvertable,double恰好支持IConvertable。