當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。