当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


GO ParseFloat用法及代码示例


GO语言"strconv"包中"ParseFloat"函数的用法及代码示例。

用法:

func ParseFloat(s string, bitSize int)(float64, error)

ParseFloat 将字符串 s 转换为具有 bitSize 指定精度的浮点数:对于 float32 为 32,对于 float64 为 64。当 bitSize=32 时,结果仍然是 float64 类型,但它可以转换为 float32 而不会改变它的值。

ParseFloat 接受十进制和十六进制浮点数语法。如果 s 格式正确且接近有效浮点数,ParseFloat 返回使用 IEEE754 无偏舍入舍入的最接近的浮点数。 (仅当十六进制表示中的位数多于尾数中的位数时,才对十六进制浮点值进行四舍五入。)

ParseFloat 返回的错误具有具体类型 *NumError 并包括 err.Num = s。

如果 s 语法格式不正确,ParseFloat 返回 err.Err = ErrSyntax

如果 s 在语法上格式正确,但距离给定大小的最大浮点数超过 1/2 ULP,则 ParseFloat 返回 f = ±Inf, err.Err = ErrRange

ParseFloat 将字符串 "NaN" 和(可能有符号的)字符串 "Inf" 和 "Infinity" 识别为它们各自的特殊浮点值。匹配时忽略大小写。

例子:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	v := "3.1415926535"
	if s, err := strconv.ParseFloat(v, 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat(v, 64); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat("NaN", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	// ParseFloat is case insensitive
	if s, err := strconv.ParseFloat("nan", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat("inf", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat("+Inf", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat("-Inf", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat("-0", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}
	if s, err := strconv.ParseFloat("+0", 32); err == nil {
		fmt.Printf("%T, %v\n", s, s)
	}

}

输出:

float64, 3.1415927410125732
float64, 3.1415926535
float64, NaN
float64, NaN
float64, +Inf
float64, +Inf
float64, -Inf
float64, -0
float64, 0

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 ParseFloat。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。