DataGrid列中如何去掉小数后的零

    1:在datagridview C#当中,可以使用TrimEnd('0')的方法;但是前提它的数据源中的字段是数字类型。

   例: bomDT.Columns.Add("percent", typeof(decimal));
        bomDT.Columns.Add("leftQty", typeof(decimal));

       dr["percent"] = percent.ToString().TrimEnd('0');

       dr["leftQty"] = leftqty.ToString().TrimEnd('0');


 

    1:如果是textBox等控件值过滤0的话,可以使用TrimEnd('0')的方法;
      eg:this.textBox1.Text.TrimEnd('0'),textBox1值为0.9900,则显示为0.99
  2:使用ToString("g0")的方法
      eg:0.99991000000000000.ToString("g0") 返回的值为0.99991
MSSQL中:
  1:将小数用CAST函数转换
      eg:select cast(0.2000 as real) 返回为 0.2
        但是此方法常常因为转换的精度的问题,是数据与实际数据由差距
   2:使用自定义函数转换
      eg:

 create   function   f_convert(@a   decimal(20,8))   
  
returns   varchar(20)   
  
as   
  
begin   
  
declare   @re   varchar(20),@r2   varchar(20),@i   int   
  
select   @re=convert(varchar(20),@a)   
  ,
@i=charindex('.',@re)   
  ,
@r2=reverse(substring(@re,@i,20))   
  ,
@r2=reverse(substring(@r2,patindex('%[^0]%',@r2),20))   
  ,
@re=left(@re,@i-1)   
  
if   @r2<>'.'   set   @re=@re+@r2   
  
return(@re)   
  
end   
  
go   
    
  
--测试数据   
  declare   @tb   table(a   decimal(20,8))   
  
insert   into   @tb     
  
select   0.20   
  
union   all   select   0.21   
  
union   all   select   0.21989   
    
  
--查询   
  select   a,转换后=dbo.f_convert(a)   from   @tb   
  
go   
    
  
--删除函数   
  drop   function   f_convert   
    
  
/*--测试结果   
  a                                             转换后                                       
  ----------------------   --------------------     
  .20000000                             0.2   
  .21000000                             0.21   
  .21989000                             0.21989   
    
  (所影响的行数为   3   行)   
  --
*/

 

原文地址:https://www.cnblogs.com/lbg280/p/1500422.html