第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

是否有任何標(biāo)準(zhǔn)庫可以將 float64 轉(zhuǎn)換為具有最大有效位數(shù)的固定寬度的字符串?

是否有任何標(biāo)準(zhǔn)庫可以將 float64 轉(zhuǎn)換為具有最大有效位數(shù)的固定寬度的字符串?

Go
慕妹3146593 2022-01-04 10:22:11
想象一下,要在 12 個(gè)固定寬度的表格中打印,我們需要打印float64數(shù)字:fmt.Printf("%12.6g\n", 9.405090880450127e+119) //"9.40509e+119"fmt.Printf("%12.6g\n", 0.1234567890123)        //"    0.123457"fmt.Printf("%12.6g\n", 123456789012.0)         //" 1.23457e+11"我們更喜歡 0.1234567890 而不是“0.123457”,因?yàn)槲覀儊G失了 6 位有效數(shù)字。我們更喜歡 123456789012 而不是“1.23457e+11”,我們會(huì)丟失 6 位有效數(shù)字。是否有任何標(biāo)準(zhǔn)庫可以轉(zhuǎn)換float64為string具有最大有效位數(shù)的固定寬度?提前致謝。
查看完整描述

1 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

基本上,您有 2 種輸出格式:科學(xué)記數(shù)法或常規(guī)格式。這兩種格式之間的轉(zhuǎn)折點(diǎn)是1e12.


所以你可以分支 if x >= 1e12。在兩個(gè)分支中,您都可以使用 0 小數(shù)位進(jìn)行格式化以查看數(shù)字的長(zhǎng)度,因此您可以計(jì)算出適合 12 寬度的小數(shù)位數(shù),因此您可以使用計(jì)算出的精度構(gòu)造最終的格式字符串.


科學(xué)記數(shù)法(%g)中也需要預(yù)先檢查,因?yàn)橹笖?shù)的寬度可能會(huì)有所不同(例如e+1,e+10,e+100)。


這是一個(gè)示例實(shí)現(xiàn)。這是讓您入門,但并不意味著處理所有情況,也不是最有效的解決方案(但相對(duì)簡(jiǎn)單并且可以完成工作):


// format12 formats x to be 12 chars long.

func format12(x float64) string {

    if x >= 1e12 {

        // Check to see how many fraction digits fit in:

        s := fmt.Sprintf("%.g", x)

        format := fmt.Sprintf("%%12.%dg", 12-len(s))

        return fmt.Sprintf(format, x)

    }


    // Check to see how many fraction digits fit in:

    s := fmt.Sprintf("%.0f", x)

    if len(s) == 12 {

        return s

    }

    format := fmt.Sprintf("%%%d.%df", len(s), 12-len(s)-1)

    return fmt.Sprintf(format, x)

}

測(cè)試它:


fs := []float64{0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0,

    9.405090880450127e+9, 9.405090880450127e+19, 9.405090880450127e+119}


for _, f := range fs {

    fmt.Println(format12(f))

}

輸出(在Go Playground上試試):


0.0000000000

0.1234567890

1234.5678901

123456789012

1.234568e+12

9405090880.5

9.405091e+19

9.40509e+119


查看完整回答
反對(duì) 回復(fù) 2022-01-04
  • 1 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)