C#真是太麻烦了,每个类型转换都要花几个小时去研究,又碰到了同样的问题
double d1=double.Parse(,dr.GetValue(0).ToString());
上面出错

解决方案 »

  1.   

    详细错误
    输入字符串的格式不正确。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 
    行 51:  while(dr.Read())
    行 52:  {   double d1,d2;
    行 53:  d1=double.Parse(dr.GetValue(0).ToString());
    行 54:  d2=double.Parse(dr.GetValue(1).ToString());
    行 55:  d1=Math.Round(d1,2);
     
      

  2.   


    楼主用的是System.Data.SqlClient.SqlDataReader么?
    如果是,这个DataReader有很多Get方法可以使用的如果要获得Double类型,只要DataReader.GetDouble(0)就行了啊
    ==============================
    以下摘自MSDN
    ==============================
       GetBoolean  已重写。 获取指定列的布尔值形式的值。  
       GetByte  已重写。 获取指定列的字节形式的值。  
       GetBytes  已重写。 从指定的列偏移量将字节流读入缓冲区,并将其作为从给定的缓冲区偏移量开始的数组。  
       GetChar  已重写。 获取指定列的单个字符串形式的值。  
       GetChars  已重写。 从指定的列偏移量将字符流作为数组从给定的缓冲区偏移量开始读入缓冲区。  
       GetData   返回被请求的列序号的 DbDataReader 对象。 (从 DbDataReader 继承。) 
       GetDataTypeName  已重写。 获取源数据类型的名称。  
       GetDateTime  已重写。 获取指定列的 DateTime 对象形式的值。  
       GetDecimal  已重写。 获取指定列的 Decimal 对象形式的值。  
       GetDouble  已重写。 获取指定列的双精度浮点数形式的值。  
      GetEnumerator  已重写。 返回循环访问 SqlDataReader 的 IEnumerator。  
       GetFieldType  已重写。 获取是对象的数据类型的 Type。  
       GetFloat  已重写。 获取指定列的单精度浮点数形式的值。  
       GetGuid  已重写。 获取指定列的值作为全局唯一标识符 (GUID)。  
       GetHashCode   用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。) 
       GetInt16  已重写。 获取指定列的 16 位有符号整数形式的值。  
       GetInt32  已重写。 获取指定列的 32 位有符号整数形式的值。  
       GetInt64  已重写。 获取指定列的 64 位有符号整数形式的值。  
      GetLifetimeService   检索控制此实例的生存期策略的当前生存期服务对象。 (从 MarshalByRefObject 继承。) 
       GetName  已重写。 获取指定列的名称。  
       GetOrdinal  已重写。 在给定列名称的情况下获取列序号。  
      GetProviderSpecificFieldType  已重写。 获取一个 Object,它表示基础提供程序特定的字段类型。  
      GetProviderSpecificValue  已重写。 获取一个表示基础提供程序特定值的 Object。  
      GetProviderSpecificValues  已重写。 获取一个对象数组,这些对象表示特定于基础提供程序的值。  
       GetSchemaTable  已重写。 返回一个 DataTable,它描述 SqlDataReader 的列元数据。  
       GetSqlBinary  获取指定列的 SqlBinary 形式的值。  
       GetSqlBoolean  获取指定列的 SqlBoolean 形式的值。  
       GetSqlByte  获取指定列的 SqlByte 形式的值。  
      GetSqlBytes  获取指定列的 SqlBytes 形式的值。  
      GetSqlChars  获取指定列的 SqlChars 形式的值。  
       GetSqlDateTime  获取指定列的 SqlDateTime 形式的值。  
       GetSqlDecimal  获取指定列的 SqlDecimal 形式的值。  
       GetSqlDouble  获取指定列的 SqlDouble 形式的值。  
       GetSqlGuid  获取指定列的 SqlGuid 形式的值。  
       GetSqlInt16  获取指定列的 SqlInt16 形式的值。  
       GetSqlInt32  获取指定列的 SqlInt32 形式的值。  
       GetSqlInt64  获取指定列的 SqlInt64 形式的值。  
       GetSqlMoney  获取指定列的 SqlMoney 形式的值。  
       GetSqlSingle  获取指定列的 SqlSingle 形式的值。  
       GetSqlString  获取指定列的 SqlString 形式的值。  
       GetSqlValue  获取一个表示基础 SqlDbType 变量的 Object。  
       GetSqlValues  获取当前行中的所有属性列。  
      GetSqlXml  获取指定列的 XML 值形式的值。  
       GetString  已重写。 获取指定列的字符串形式的值。  
       GetType   获取当前实例的 Type。 (从 Object 继承。) 
       GetValue  已重写。 获取以本机格式表示的指定列的值。  
       GetValues  已重写。 获取当前行的集合中的所有属性列。  
      

  3.   

    我就是用的 SqlDataReader
    请问,如何让金额从4位小数变为两位小数,我伤透了心
      

  4.   

    <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
    在第三个参数里面,可以控制各种格式。