Golang实例 - strconv ParseFloat函数指南

2,218 阅读2分钟

这篇博文涵盖了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