0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点#go基础之自定义输出

如果一个除法除不尽,将得到一个很长一串数字。

fmt.Println(1.0/3.0)

得到

0.3333333333333333

为了处理这类格式化问题,fmt包提供了Printf函数。Printf代表“带格式的打印”。它接受一个字符串并将一个或多个值插入其中,以特定的方式进行格式化。如果想保留2位小数

fmt.Printf("%0.2f",1.0/3.0)

Printf的第一个参数是一个字符串,用于格式化输出。它的大部分格式与字符串中显示的格式完全相同。但是,任何百分号(%)都将被视为格式化动词的开始,字符串的一部分将被特定格式的值所替换。

%f  浮点数

%d  十进制整数

%s  字符串

%t  布尔值

%v  任何值

%#v 任何值,在go程序中显示的格式进行格式化

我们要特别指出%#v格式化动词。因为它以Go代码中的显示方式而不是通常的显示方式来打印值,%#v可以显示一些值,如果不使用%#v的话,这些值可能会在输出中被隐藏,例如,在这段代码中,%#v显示了一个空字符串、一个制表符和一个换行符,所有这些在用%v打印时都是不可见的。

在格式化动词的百分号后面指定最小宽度。如果匹配该动词的参数比最小宽度短,则将使用空格进行填充,直到达到最小宽度为止。

对于浮点数的精度,%6.2f,6代表整个数字的最小宽度,2代表小数点以后的宽度。整个数的最小宽度包括数字位和小数点。小数点后的宽度是要显示的小数位数。如果给出更精确的数字,它将被四舍五入(向上或向下)以适应给定的小数位数。最后一种格式是"%.2f",将允许我们取任意精度的浮点数,并将它们四舍五入到小数点后两位。

如果只是返回格式化的字符串而不是打印它可以使用

var result = fmt.Sprintf("%0.2f",1.0/3.0)
fmt.Println(result)


举报

相关推荐

0 条评论