刚学习c#,在测试一个实例时出现下面的错误:int nbalance = int.Parse(strBalance);其中strBalance的值是:4800.0000然后用:int nbalance = Convert.ToInt32(strBalance);也是一样的错误:System.FormatException: 输入字符串的格式不正确。请问究竟为什么说是格式不正确呢?

解决方案 »

  1.   

    int nbalance = int.Parse(strBalance); 
    ==
    Decimal nbalance = decimal.Parse(strBalance); 
      

  2.   

    你先把4800。0000转成decimal型,再转为int型应该就型了,不能直接转为int型。
      

  3.   

    其实:
     string strBalance=ds.Tables["account"].Rows[0]["balance"].ToString(); strBalance来自于SQL SERVER的数据表的balance字段的数据,balance的字段类型是money 所以strBalance的值是"4800.0000" 现在看来是我的这个实例的数据类型选择错误了。 请问在C#中的数据类型,对应于SQL SERVER的money数据类型,应该用哪一种呢? 是decimal吗?
      

  4.   

    请问在C#中的数据类型,对应于SQL SERVER的money数据类型,应该用哪一种呢? 是decimal吗?
    ==
      

  5.   

    Decimal nbalance = decimal.Parse(strBalance); 
      

  6.   

    把int 改成 decimal后,程序调试通过了。
    这次给我两个感受:1、选择数据类型要小心,有时候书上给的例子未必都是正确的,应该根据对应的规则选择,如money应该对应decimal,虽然实际用到都是整数。2、不是很理解为何从SQL SERVER数据读取的数据,为何不能直接使用,而是那么麻烦,先转成字符,然后再转为实际使用的数据类型,对于从别的编程语言转过来人一下子是比较难理解的。
      

  7.   

    如果lz稍微了解一点LINQ,就知道这些问题都是.NET 3.5和LINQ所致力于解决的。
      

  8.   


    可以通过重载运算符decimal或者int,让其支持money类型
      

  9.   

    别的编程语言,你说的是vbscript之类吧
    你要是从c/c++转过来绝对不会有这样的疑惑。
    还是抓抓基础知识吧。
    估计你看的书,是国人自己写的,用来骗钱的那种,自己都没调试过程序。
      

  10.   


    呵呵,不好意思,刚接触C#,LINQ还没有了解过。
      

  11.   

    如果为了预防类似的异常可以用,double.TryParse(,out ),int.TryParse(,out )