public double _StringToDouble(string input)
        {
            string result = input.Trim();
            double temp = 0;
            try
            {
                temp = Convert.ToDouble(input.ToString());
            }
            catch
            {
                temp = 0;
            }
            return temp;
        }
转换的是600

解决方案 »

  1.   

    我觉得很纳闷啊,为啥第一句result没用呢?还有 input都是string 型了,你为啥还要ToString()?你把temp = Convert.ToDouble(input.ToString());
    换成temp = Convert.ToDouble(result);还有最好先加个判断,if(result=="") return 0;最好附带个错误信息,用ref err
      

  2.   

    public double _StringToDouble(string input)
      {
     
      double temp = 0;
      try
      {
      temp = Convert.ToDouble(input.ToString());
      }
      catch
      {
      temp = 0;
      }
      return temp;
      }
    转换的是600
      

  3.   

    你result变量后面没有用上,另外你可以设置断点单步跟踪调试一下,就可以发现错误了!
      

  4.   

    那只能说明你的input不是单纯的“600”肯定还有其它字符
    调试看看input到底是什么,是不是带有\0
      

  5.   

    或者是600带空格呢?你没用result,或者你传的根本就是个空串!
      

  6.   

    找到问题了:

    <asp:Label ID="LabelSL" runat="server" Text='<%# Bind("SL") %>' Visible="false"></asp:Label>
                                                                改成下面:                                                            <asp:Label ID="LabelKCTBSL" runat="server" Text='<%# Eval("SL")%>' Visible="false"></asp:Label>
      

  7.   

    跟踪发现如果用<%# Bind("SL") %> 得到的值是:600.000.  后面有一个.如果用<%# Eval("SL")%>  就是:600.000  简直太气人。但怎么会这样呢?可能是.net 的问题,,,
      

  8.   

    好像是这样写的<%#databinder.eval(contaier.dataitem,'')%> 试试
      

  9.   

    public double _StringToDouble(string input)
      {
      string result = input.Trim();
      double temp = 0;
      try
      {
      temp = int.Parse(result.ToString());
      }
      catch
      {
      temp = 0;
      }
      return temp;
      }
     
      

  10.   


    temp = int.Parse(result.ToString());这里请改成
    temp=double.Parse(result.ToString());