golang formatint 哪个包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang formatint 哪个包相关的知识,希望对你有一定的参考价值。

strconv 包
函数和方法
// atob.go

------------------------------------------------------------

// ParseBool 将字符串转换为布尔值
// 它接受真值:1, t, T, TRUE, true, True
// 它接受假值:0, f, F, FALSE, false, False.
// 其它任何值都返回一个错误
func ParseBool(str string) (value bool, err error)

func main()
fmt.Println(strconv.ParseBool("1")) // true
fmt.Println(strconv.ParseBool("t")) // true
fmt.Println(strconv.ParseBool("T")) // true
fmt.Println(strconv.ParseBool("true")) // true
fmt.Println(strconv.ParseBool("True")) // true
fmt.Println(strconv.ParseBool("TRUE")) // true
fmt.Println(strconv.ParseBool("TRue"))
// false strconv.ParseBool: parsing "TRue": invalid syntax
fmt.Println(strconv.ParseBool("0")) // false
fmt.Println(strconv.ParseBool("f")) // false
fmt.Println(strconv.ParseBool("F")) // false
fmt.Println(strconv.ParseBool("false")) // false
fmt.Println(strconv.ParseBool("False")) // false
fmt.Println(strconv.ParseBool("FALSE")) // false
fmt.Println(strconv.ParseBool("FALse"))
// false strconv.ParseBool: parsing "FAlse": invalid syntax


------------------------------------------------------------

// FormatBool 将布尔值转换为字符串 "true" 或 "false"
func FormatBool(b bool) string

func main()
fmt.Println(strconv.FormatBool(0 < 1)) // true
fmt.Println(strconv.FormatBool(0 > 1)) // false


------------------------------------------------------------

// AppendBool 将布尔值 b 转换为字符串 "true" 或 "false"
// 然后将结果追加到 dst 的尾部,返回追加后的 []byte
func AppendBool(dst []byte, b bool) []byte

func main()
rst := make([]byte, 0)
rst = strconv.AppendBool(rst, 0 < 1)
fmt.Printf("%s\n", rst) // true
rst = strconv.AppendBool(rst, 0 > 1)
fmt.Printf("%s\n", rst) // truefalse


============================================================

// atof.go

------------------------------------------------------------

// ParseFloat 将字符串转换为浮点数
// s:要转换的字符串
// bitSize:指定浮点类型(32:float32、64:float64)
// 如果 s 是合法的格式,而且接近一个浮点值,
// 则返回浮点数的四舍五入值(依据 IEEE754 的四舍五入标准)
// 如果 s 不是合法的格式,则返回“语法错误”
// 如果转换结果超出 bitSize 范围,则返回“超出范围”
func ParseFloat(s string, bitSize int) (f float64, err error)

func main()
s := "0.12345678901234567890"
f, err := strconv.ParseFloat(s, 32)
fmt.Println(f, err) // 0.12345679104328156
fmt.Println(float32(f), err) // 0.12345679
f, err = strconv.ParseFloat(s, 64)
fmt.Println(f, err) // 0.12345678901234568
参考技术A strconv 包中的函数和方法
示例:
// ftoa.go

------------------------------------------------------------

// FormatFloat 将浮点数 f 转换为字符串值
// f:要转换的浮点数
// fmt:格式标记(b、e、E、f、g、G)
// prec:精度(数字部分的长度,不包括指数部分)
// bitSize:指定浮点类型(32:float32、64:float64)
//
// 格式标记:
// 'b' (-ddddp±ddd,二进制指数)
// 'e' (-d.dddde±dd,十进制指数)
// 'E' (-d.ddddE±dd,十进制指数)
// 'f' (-ddd.dddd,没有指数)
// 'g' ('e':大指数,'f':其它情况)
// 'G' ('E':大指数,'f':其它情况)
//
// 如果格式标记为 'e','E'和'f',则 prec 表示小数点后的数字位数
// 如果格式标记为 'g','G',则 prec 表示总的数字位数(整数部分+小数部分)
func FormatFloat(f float64, fmt byte, prec, bitSize int) string

func main()
f := 100.12345678901234567890123456789
fmt.Println(strconv.FormatFloat(f, 'b', 5, 32))
// 13123382p-17
fmt.Println(strconv.FormatFloat(f, 'e', 5, 32))
// 1.00123e+02
fmt.Println(strconv.FormatFloat(f, 'E', 5, 32))
// 1.00123E+02
fmt.Println(strconv.FormatFloat(f, 'f', 5, 32))
// 100.12346
fmt.Println(strconv.FormatFloat(f, 'g', 5, 32))
// 100.12
fmt.Println(strconv.FormatFloat(f, 'G', 5, 32))
// 100.12
fmt.Println(strconv.FormatFloat(f, 'b', 30, 32))
// 13123382p-17
fmt.Println(strconv.FormatFloat(f, 'e', 30, 32))
// 1.001234588623046875000000000000e+02
fmt.Println(strconv.FormatFloat(f, 'E', 30, 32))
// 1.001234588623046875000000000000E+02
fmt.Println(strconv.FormatFloat(f, 'f', 30, 32))
// 100.123458862304687500000000000000
fmt.Println(strconv.FormatFloat(f, 'g', 30, 32))
// 100.1234588623046875
fmt.Println(strconv.FormatFloat(f, 'G', 30, 32))
// 100.1234588623046875

golang类型转换小总结

1. int <--> string

1.1. int --> string

str := strconv.Itoa(intVal)

当然,整数转换成字符串还有其他方法,比如

fmt.Sprintf
strconv.FormatInt

1.2. string --> int

intVal,err := strconv.Atoi(str)

2. string --> int64

2.1. string --> int64

int64Val,err := strconv.ParseInt(str, 10, 64)

2.2. int64 --> string

str := strconv.FormatInt(int64Val, 10)

其中FormatInt第二个参数表示进制,10表示十进制

需要注意转换规定

FormatInt returns the string representation of i in the given base, for 2 <= base <= 36.
The result uses the lower-case letters ‘a‘ to ‘z‘ for digit values >= 10
 

3. float --> string

3.1. float --> string

v := 3.1415926535
s1 := strconv.FormatFloat(v, E, -1, 32)//float32
s2 := strconv.FormatFloat(v, E, -1, 64)//float64
 
第二个参数可选‘f‘/‘e‘/‘E‘等,含义如下:
 ‘b‘ (-ddddp±ddd,二进制指数)
 ‘e‘ (-d.dddde±dd,十进制指数)
 ‘E‘ (-d.ddddE±dd,十进制指数)
 ‘f‘ (-ddd.dddd,没有指数)
 ‘g‘ (‘e‘:大指数,‘f‘:其它情况)
 ‘G‘ (‘E‘:大指数,‘f‘:其它情况)
 

3.2. string --> float

s := "3.1415926535"
v1, err := strconv.ParseFloat(v, 32)
v2, err := strconv.ParseFloat(v, 64)

 

4.float --> int

var a int64
a = 1
var b float64
b = 2.000

4.1. float --> int

d := int64(b)

4.2. int --> float

c := float64(a)

 

 

 

以上是关于golang formatint 哪个包的主要内容,如果未能解决你的问题,请参考以下文章

golang工具代码持续汇总

Golang 类型转换整理

golang类型转换小总结

golang string int int64转换

golang下grpc的实践

Golang 入门 : 切片(slice)