記一次Go fmt.Sprintf轉(zhuǎn)換float64錯誤

在Go項目中開發(fā)中盡量不要使用fmt.Sprintf將其它格式轉(zhuǎn)換為String

使用fmt.Sprintf時需要注意如果使用%v, %+v, 超過100W會轉(zhuǎn)換成科學(xué)計數(shù)法

func main() {
    var (
        fs = []float64{}
    )
    fs = append(fs, 10000)
    fs = append(fs, 99999)
    fs = append(fs, 65536)
    fs = append(fs, 100000)
    fs = append(fs, 999999)
    fs = append(fs, 1000000)
    for _, i2 := range fs {
        sprintf := fmt.Sprintf("f---%.f", i2)
        fmt.Printf("%+v \n", sprintf)
        sprintf = fmt.Sprintf("v--%v", i2)
        fmt.Printf("%+v \n", sprintf)
        sprintf = fmt.Sprintf("+v--%+v", i2)
        fmt.Printf("%+v \n", sprintf)
        fmt.Println("\n")
    }
}

f---10000 
v--10000 
+v--10000 

f---99999 
v--99999 
+v--99999 

f---65536 
v--65536 
+v--65536 

f---100000 
v--100000 
+v--100000 

f---999999 
v--999999 
+v--999999 

f---1000000 
v--1e+06 
+v--1e+06 

建議:

func FormatFloat(f float64, fmt byte, prec, bitSize int) string {
    return string(genericFtoa(make([]byte, 0, max(prec+4, 24)), f, fmt, prec, bitSize))
}
f: 傳入的float數(shù)字
fmt:  如果格式標記為 'e','E'和'f',則 prec 表示小數(shù)點后的數(shù)字位數(shù), 
如果格式標記為 'g','G',則 prec 表示總的數(shù)字位數(shù)(整數(shù)部分+小數(shù)部分)
  'b' (-ddddp±ddd,二進制指數(shù))
  'e' (-d.dddde±dd,十進制指數(shù))
  'E' (-d.ddddE±dd,十進制指數(shù))
  'f' (-ddd.dddd,沒有指數(shù))
  'g' ('e':大指數(shù),'f':其它情況)
  'G' ('E':大指數(shù),'f':其它情況)
prec:精度(數(shù)字部分的長度,不包括指數(shù)部分)
bitSize:指定浮點類型(32:float32、64:float64)

golang 中strconv包用法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、數(shù)據(jù)類型轉(zhuǎn)換 https://studygolang.com/articles/10838 package m...
    蓓蓓的萬能男友閱讀 1,161評論 0 1
  • Notes Section 2, Program Structure nested block in if-els...
    keysaim閱讀 1,326評論 0 1
  • 編寫和優(yōu)化Go代碼 本文檔概述了編寫高性能Go代碼的最佳實踐。 雖然有些討論會提高單個服務(wù)的速度(通過緩存等),但...
    freelang閱讀 2,325評論 0 4
  • fmt格式化字符串 格式:%[旗標][寬度][.精度][arg索引]動詞旗標有以下幾種:+: 對于數(shù)值類型總是輸出...
    皮皮v閱讀 1,220評論 0 3
  • 第一章五個程序 都很好!但是初學(xué)編程/沒有其他語言基礎(chǔ)的不容易看懂。 記一遍不熟悉的東西: who = strin...
    暗黑破壞球嘿哈閱讀 1,548評論 0 10

友情鏈接更多精彩內(nèi)容