这篇博文涵盖了Go语言中的软件包strconv ParseFloat函数和实例。
golang strconv ParseFloat函数
strconv是Go语言中的一个标准内置包,它提供了各种函数实现,用于将字符串转换为int, float, boolean等类型。
字符串到浮点是程序员在开发过程中的一项常见任务。
ParseFloat是一个内置的函数,可以将一个字符串值转换为一个浮点数。
下面是这个函数的语法
func ParseFloat(inputstring string, bitSize int) (float64, error)
参数列表
inputstring是一个用字符串表示的数字浮点数 bitSize是int类型的参数精度值。对于 float32 可以是 32,对于 float64 可以是 64
返回类型
这个函数总是返回两个值。返回的float64值包含一个浮动数。如果需要,我们可以转换为float32值。如果不能将字符串转换为浮动数,则返回错误值*NumError。
函数用法 - 成功和错误案例
以下是将字符串转换为浮动类型的各种使用情况 在下面的代码中,ParseFloat()函数接收一个字符串并将其转换为给定精度为64的浮动数。对于转换,考虑的是64位。Go语言使用IEEE_754二进制格式来存储浮点数,返回float64类型的浮点数和错误-nil。
floatNumb, err := strconv.ParseFloat("123.3412312312", 64)
fmt.Println(floatNumb)
fmt.Println(reflect.TypeOf(floatNumb))
fmt.Println(err)
输出是
123.3412312312
float64
现在我们将看到将精度值从64改为32
floatNumb, err := strconv.ParseFloat("123.3412312312", 32)
fmt.Println(floatNumb)
fmt.Println(reflect.TypeOf(floatNumb))
fmt.Println(err)
输出为
123.34123229980469
float64
下面的例子给出了一个错误 -strconv.ParseFloat: parsing "abc": invalid syntaxwhen given input string is not numeric 在这种情况下,这个函数返回float64类型的0值,err包含一个错误描述
floatNumb, err := strconv.ParseFloat("abc", 32)
fmt.Println(floatNumb)
fmt.Println(reflect.TypeOf(floatNumb))
fmt.Println(err)
输出是
0
float64
strconv.ParseFloat: parsing "abc": invalid syntax
ParseFloat函数示例程序
下面是一个使用parseFloat将字符串转换为float64数字的例子。
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
floatString := "12545.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, 12545.23046875
float64, 12545.23
将字符串转换为float64/float32值
ParseFloat()函数默认返回float64值。 float32(float64value)函数用于转换为float32值 下面是一个将字符串转换成float64/float32的程序代码
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
floatNumb, err := strconv.ParseFloat("123.23", 32)
fmt.Println(floatNumb)
fmt.Println(reflect.TypeOf(floatNumb))
fmt.Println(err)
float32Value := float32(floatNumb) // Convert to float 32
fmt.Println(float32Value)
fmt.Println(reflect.TypeOf(float32Value))
}
输出为
123.2300033569336
float64
123.23
float32