这篇文章介绍了如何将字符串类型转换为浮点类型或将浮点类型转换为字符串,并举例说明。
Golang strconv包
字符串是由一个变量引用的一组字符。float是一个数字,存储所有IEEE-754 64位浮点数的集合。两者都是不同的类型,自动转换将不会发生。开发者需要写一段代码来处理这个问题。Golang提供了标准的内置包strconv来做字符串到其他类型的转换。将String转换为float或将float转换为String是开发者的一项常见任务。
将字符串转换为浮点数的例子
strconv包提供了ParseFloat函数来转换为浮点数类型。你可以在这里查看更多关于这个函数的信息
以下是语法
func ParseFloat(s string, bitSize int) (float64, error)
参数是
字符串是一个输入字符串。如果给定的字符串不是数字,就会出现错误strconv.ParseFloat: parsing "abc": invalid syntax
bisize是int类型,数值为32或64。
下面是strconv ParseFloat函数的例子程序
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
floatString := "587.23"
floatNumb, err := strconv.ParseFloat("abc", 32)
fmt.Println(floatNumb)
fmt.Println(reflect.TypeOf(floatNumb))
fmt.Println(err)
if n1, err := strconv.ParseFloat(floatString, 32); err == nil {
fmt.Printf("%T, %v\n", n1, n1)
}
if n2, err := strconv.ParseFloat(floatString, 64); err == nil {
fmt.Printf("%T, %v\n", n2, n2)
}
}
上述程序的一个输出
0
float64
strconv.ParseFloat: parsing "abc": invalid syntax
float64, 587.22998046875
float64, 587.23
将浮点数转换为字符串的例子
有两种方法可以将浮点数转换为字符串类型
一种是使用fmt.Sprintf()函数,另一种是使用strconv.FormatFloat函数
fmt.Sprintf函数示例
fmt包提供的Sprintf是用来转换为字符串的。
下面是一个语法
func Sprintf(format string, a ...interface{}) string
格式是一个字符串
%f - 十进制格式
%e - 科学符号格式
%.5f - 精度为5的格式
%g - 指数格式
参数a是vardiac接口,可以接受任何类型的值。
下面是一个fmt Sprintf函数的例子程序
package main
import (
"fmt"
"reflect"
)
func main() {
str := fmt.Sprintf("%f", 45.1) //45.100000
fmt.Println(reflect.TypeOf(str))
fmt.Println(str)
str1 := fmt.Sprintf("%e", 45.1) //4.510000e+01
fmt.Println(reflect.TypeOf(str1))
fmt.Println(str1)
str2 := fmt.Sprintf("%.5f", 45.1) //45.10000
fmt.Println(reflect.TypeOf(str2))
fmt.Println(str2)
str3 := fmt.Sprintf("%g", 45.1) //45.1
fmt.Println(reflect.TypeOf(str3))
fmt.Println(str3)
}
输出是
string
45.100000
string
4.510000e+01
string
45.10000
string
45.1
strconv FormatFloat函数示例
strconv包中的FormatFloat函数是将浮点数转换为具有指定格式和精度的字符串。
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
参数是
浮点数转换为字符串
fmt是包含数值的字节,b-二进制指数,e或E-十进制指数,F-无指数,g或G-大指数
prec是int精度值
bitSize是int类型,包含32和64的数值 下面是一个strconv FormatFloat函数的例子程序
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
floatNumb := 5.789455
str := strconv.FormatFloat(floatNumb, 'f', 5, 64)
fmt.Println(reflect.TypeOf(str))
fmt.Println(str)
str1 := strconv.FormatFloat(floatNumb, 'e', 5, 64)
fmt.Println(reflect.TypeOf(str1))
fmt.Println(str1)
str2 := strconv.FormatFloat(floatNumb, 'g', 5, 64)
fmt.Println(reflect.TypeOf(str2))
fmt.Println(str2)
}
输出是
string
5.78946
string
5.78946e+00
string
5.7895