Golang 中 int, uint, float 与 string 的相互转换

Golang

Posted by Shaocong on July 29, 2019

主要涉及到包strconv, 具体详情自行查看

相关转换示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main

import (
	"strconv"
	"fmt"
)

func main() {
	var intnum int = -666
	var int64num int64 = -64
	var uintnum uint64 = 666
	floatnum := 6.66

	str := ""

	str = strconv.Itoa(intnum)
	fmt.Println("int to string: ", intnum, "=>", str)

	// strconv.FormatInt
	// 第二个参数base: 表示转换的进制 2 <= base <= 64
	str = strconv.FormatInt(int64num, 10)
	fmt.Println("int64 to string: ", int64num, "=>", str)

	str = strconv.FormatUint(uintnum, 10)
	fmt.Println("uint to string: ", uintnum, "=>", str)

	// strconv.FormatFloat
	// 第二个参数为转换格式参数
	// 'b' (-ddddp±ddd,二进制指数)
	// 'e' (-d.dddde±dd,十进制指数)
	// 'E' (-d.ddddE±dd,十进制指数)
	// 'f' (-ddd.dddd,没有指数)
	// 'g' ('e':大指数,'f':其它情况)
	// 'G' ('E':大指数,'f':其它情况)
	// 
	// 第三个参数为保留小数个数(-1为保持原来不变, 其他值依据四舍五入进行处理)
	// 第四个参数为Float的位数(bitSize)
	str = strconv.FormatFloat(floatnum, 'E', -1, 32)
	fmt.Println("float to string: ", floatnum, "=>", str)

	str = strconv.FormatFloat(floatnum, 'f', -1, 64)
	fmt.Println("float to string: ", floatnum, "=>", str)

	str = strconv.FormatFloat(floatnum, 'f', 1, 64)
	fmt.Println("float to string: ", floatnum, "=>", str)

	intstr := "-6661"
	uintstr := "6661"
	floatstr :=  "6.661"

	var err error

	intnum, err = strconv.Atoi(intstr)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("string to int:", intstr, "=>", intnum)
	}

	// 第三参数为位数(bitSize)
	uintnum, err = strconv.ParseUint(uintstr, 10, 32)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("string to unit:", uintstr, "=>", uintnum)
	}

	floatnum, err = strconv.ParseFloat(floatstr, 64)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("string to flost:", floatstr, "=>", floatnum)
	}
}