转到 fmt float64 问题
Go fmt float64 issue
我对 go fmt 包的菜鸟理解遇到了一些问题
涉及到以下代码:
进口"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 适合我 needs.I 可以从格式化页面 (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 个零?
您可以使用 strconv.FormatFloat
并将 prec 设置为 -1:
fmt.Println(strconv.FormatFloat(big, 'f', -1, 64))
fmt.Println(strconv.FormatFloat(small, 'f', -1, 64))
打印
123456789000
0.123456789
我对 go fmt 包的菜鸟理解遇到了一些问题
涉及到以下代码:
进口"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 适合我 needs.I 可以从格式化页面 (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 个零?
您可以使用 strconv.FormatFloat
并将 prec 设置为 -1:
fmt.Println(strconv.FormatFloat(big, 'f', -1, 64))
fmt.Println(strconv.FormatFloat(small, 'f', -1, 64))
打印
123456789000
0.123456789