去掉小数后面多余的0

c#:
  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/fxllx82/archive/2008/01/03/1024755.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值