Go语言的%d,%p,%v等占位符的使用

Python015

Go语言的%d,%p,%v等占位符的使用,第1张

这些是死知识,把常用的记住,不常用的直接查表就行了

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

--*/