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 行)
--*/
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 行)
--*/