golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
type Human struct {
Name string
}
var people = Human{Name:"zhangsan"}
golang没有 '%u' 点位符,若整数为无符号类型,默认就会被打印成无符号的。
宽度与精度的控制格式以Unicode码点为单位。宽度为该数值占用区域的最小宽度;精度为小数点之后的位数。
操作数的类型为int时,宽度与精度都可用字符 '*' 表示。
对于 %g/%G 而言,精度为所有数字的总数,例如:123.45,%.4g 会打印123.5,(而 %6.2f 会打印123.45)。
%e 和 %f 的默认精度为6
对大多数的数值类型而言,宽度为输出的最小字符数,如果必要的话会为已格式化的形式填充空格。
而以字符串类型,精度为输出的最大字符数,如果必要的话会直接截断。
使用起来很简单,一般配合fmt.Printf()使用,因为fmt的Printf()是有格式的输出,切忌使用Println(),否则将会以字符串的形式输出。
查看原文: golang fmt格式“占位符”
有两种方法:
使用函数:
#include<stdio.h>
void main()
{ double x,tempint ascanf("%lf",&x)
temp=xa=int(temp)
while(a!=temp
{ temp=temp*10a=int(temp)
} printf("%d\n",a)}
2.使用强制转换命令:(int)f
注意:在转换的时候,前面的转换型一定要打括号,否则不起作用。
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 行)
--*/