91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中int、float和string類型之間相互的轉換是怎樣的

發布時間:2022-01-26 11:50:20 來源:億速云 閱讀:299 作者:柒染 欄目:開發技術

今天給大家介紹一下Go語言中int、float和string類型之間相互的轉換是怎樣的。文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。

    前言

    Go 開發中經常設計到類型轉換,本文就重點記錄下 整形、浮點型和字符串類型互相轉換的方法。

    整形轉字符串

    fmt.Sprintf

    將整數轉為字符串,字符串可以是2進制、8進制、10進制或者16進制的表示。

    格式描述
    %b整型以二進制方式顯示
    %o整型以八進制方式顯示
    %d整型以十進制方式顯示
    %x整型以十六進制方式顯示
    %X整型以十六進制、字母大寫方式顯示
    使用方法
    fmt.Sprintf("%d", int32(111))   // 111
    fmt.Sprintf("%d", int64(111))   // 111
    fmt.Sprintf("%d", 111)                    // 111
    fmt.Sprintf("%b", 10)                        // 1010

    strconv.Itoa

    將 int 類型的整數 轉為 10進制的字符串表示,底層調用的就是下一個方法: FormatInt(int64(i), 10)

    // Itoa is equivalent to FormatInt(int64(i), 10).
    func Itoa(i int) string {
        return FormatInt(int64(i), 10)
    }
    使用方法

    我們可以把int32、int64 先轉為 int,然后再使用該方法轉換

    strconv.Itoa(1123)  // 1123

    strconv.FormatInt

    將整數轉為字符串,字符串可選2到36進制的字符串表示。

    入參
    • i: int64類型的整數

    • base: 表示要轉為的進制,支持2到36進制,使用最多的就是轉為10進制

    func FormatInt(i int64, base int) string {}
    使用方法

    我們可以把int32、int 先轉為 int64,然后再使用該方法轉換

    strconv.FormatInt(123, 10)  // 123
    strconv.FormatInt(123, 2)   // 1111011

    浮點型轉字符串

    fmt.Sprintf

    支持 float32、float64 轉 string

    fmt.Sprintf("%f", 3.12344)  // 3.123440
    // 控制輸出小數位數
    fmt.Sprintf("%.2f", 323.12344)  // 323.12
    strconv.FormatFloat
    入參
    • f:float64類型的浮點數

    • fmt: 轉為字符串后,字符串的類型:

      • ‘b’ (-ddddp±ddd):二進制指數

      • ‘e’ (-d.dddde±dd):10進制指數

      • ‘E’ (-d.ddddE±dd):10進制指數

      • ‘f’ (-ddd.dddd):無指數

      • ‘g’ :指數很大時使用’e',其他使用 ‘f’

      • ‘G’ :指數很大時使用 ‘E’,其他使用’f'

      • ‘x’ (-0xd.ddddp±ddd):十六進制分數和二進制指數

      • ‘X’ (-0Xd.ddddP±ddd):十六進制分數和二進制指數

    • prec:控制經度

      • 如果格式標記為 ‘e’、‘E’、‘f’、‘x’、‘X’,則 prec 表示小數點后的數字位數

      • 如果格式標記為 ‘g’,‘G’,則 prec 表示總的數字位數(整數部分+小數部分)

    • bitSize:表示f最初的類型。(雖然入參f是float64,有可能是float32轉過來的)

    func FormatFloat(f float64, fmt byte, prec, bitSize int) string {
        return string(genericFtoa(make([]byte, 0, max(prec+4, 24)), f, fmt, prec, bitSize))
    }
    使用方法
    strconv.FormatFloat(3.1415926, 'f', 5, 64)  // 3.14159
    strconv.FormatFloat(3.1415926e5, 'f', 5, 64) // 314159.26000

    字符串轉整形

    strconv.Atoi

    string 轉 int,默認字符串是10進制的,相當于是下個方法 ParseInt(s, 10, 0) 的 10 進制轉化簡版

    func Atoi(s string) (int, error)
    使用方法
    strconv.Atoi("1234")  // 1234 <nil>
    strconv.Atoi("001") // 1 <nil>

    strconv.ParseInt

    string 轉 int32 int64 int,字符串可以是不同進制類型的。

    // s: 數字的字符串形式 
    // base: 數字字符串的進制,支持0以及2-36。如果該字段為0,會根據字符串的前綴來推斷進制,比如"0b"->2進制、"0或0o"->8進制、"0x" -> 16進制
    // bitSize: 返回結果的bit大小, 0 -> int, 8 -> int8、16 -> int16、32 -> int32、 64 -> int64。因為可以選擇不同的 bitSize,所以統一轉為int64,不會丟失精度。可根據需要的bitSize,自行轉回去 
    func ParseInt(s string, base int, bitSize int) (i int64, err error)
    使用方法
    // 轉int32
    num, err := strconv.ParseInt("123",10,32)
    fmt.Println(int32(num), err)  // 123 <nil>
    // 轉int64
    num, err := strconv.ParseInt("123", 10, 64)
    fmt.Println(num, err) // 123 <nil>
    // 轉int
    num, err := strconv.ParseInt("123", 10, 64)    
    fmt.Println(int(num), err) // 123 <nil>
    // 二進制轉int64
    num, err := strconv.ParseInt("0b1001", 0, 64)
    fmt.Println(int(num), err)  // 9 <nil>

    字符串轉浮點型

    strconv.ParseFloat

    // s: 字符串
    // bitSize: 要返回結果的精度
    // 方法始終返回float64,即使 bitSize=32,返回 float64 也不會丟失精度
    func ParseFloat(s string, bitSize int) (float64, error) {
        if bitSize == 32 {
            f, err := atof32(s)
            return float64(f), err
        }
        return atof64(s)
    }
    使用方法
    strconv.ParseFloat("123.213", 64)   // 123.213 <nil>
    
    strconv.ParseFloat("123.213e3", 64)  // 123213 <nil>

    以上就是Go語言中int、float和string類型之間相互的轉換是怎樣的的全部內容了,更多與Go語言中int、float和string類型之間相互的轉換是怎樣的相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    乐业县| 肇源县| 台东县| 乐陵市| 武穴市| 桐庐县| 静海县| 镇安县| 新蔡县| 霍州市| 和硕县| 秭归县| 铁岭县| 江口县| 四会市| 娱乐| 柳州市| 札达县| 漳浦县| 荔浦县| 昌平区| 乌什县| 库车县| 体育| 和林格尔县| 新邵县| 临清市| 沂源县| 晋江市| 诸城市| 襄樊市| 灌南县| 彩票| 神木县| 达孜县| 宜州市| 青州市| 平泉县| 枝江市| 伊吾县| 贵溪市|