fmt.Sprintf的%f宽度问题

文档:studygolang.com/pkgdoc
%9.2f 宽度9,精度2
对于浮点数,宽度设置输出总长度;精度设置小数部分长度(如果有的话)

var numDecimal float64 = 9666777888.888
str := ""

//%9.2f
str = fmt.Sprintf("%9.2f", numDecimal)
//这里输出 "9666777888.89" string
fmt.Printf("%q %T\n", str, str)

//%1.2f
str = fmt.Sprintf("%1.2f", numDecimal)
//这里输出 "9666777888.89" string
fmt.Printf("%q %T\n", str, str)

请问一下 文档里说宽度是输出的总长度,我理解的是指字符串长度,可输出结果不是这样,那实际是指什么意思呢

zhaocrazy
最佳答案

你对 你代码里%1.2f 的输出有疑问吗 ?宽度(最小总长度)是1 精度是2

9666777888 ,10个数字大于1 直接填充,如果是15,5个必要会填充的是空格;888,2f输出为89

宽度是输出字符数目的最小数量,如果必要会用空格填充。

2年前 评论
OnlyRed (楼主) 2年前
讨论数量: 2
zhaocrazy

你对 你代码里%1.2f 的输出有疑问吗 ?宽度(最小总长度)是1 精度是2

9666777888 ,10个数字大于1 直接填充,如果是15,5个必要会填充的是空格;888,2f输出为89

宽度是输出字符数目的最小数量,如果必要会用空格填充。

2年前 评论
OnlyRed (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!