簡體   English   中英

去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符合我的需要。我可以從格式化頁面( 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

游樂場: http//play.golang.org/p/7p8xnQ_BzE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM