我对go fmt package的noob理解中遇到了一些问题
它涉及以下代码:
导入" fmt"
func main() {
var smallFloat float64 = 0.123456789
var bigFloat float64 = 123456789000
fmt.Println(fmt.Sprintf("%f", smallFloat))
fmt.Println(fmt.Sprintf("%f", bigFloat))
}
输出结果为:
0.123457
123456789000.000000
我不想使用科学记数法,所以认为%f符合我的需要。我可以从格式化页面(https://golang.org/pkg/fmt/)看到它说:
The default precision for %e and %f is 6; for %g it is the smallest number of digits necessary to identify the value uniquely.
有没有办法可以使用fmt包,它允许我代表smallFloat的完整十进制值,同时不会在bigFloat的末尾附加6个零?
答案 0 :(得分:3)
您可以将strconv.FormatFloat
与prec设置为-1:
fmt.Println(strconv.FormatFloat(big, 'f', -1, 64))
fmt.Println(strconv.FormatFloat(small, 'f', -1, 64))
打印
123456789000
0.123456789