golang float 精度


golang float精度有時會不准確

func main() {
    fmt.Println(F()) 
}

func F() float64 {
    f := 10.2
    return f * 1e2
}

如上代碼,我們預期得到的結果是1020,而實際得到的結果是1019.9999999999999

package main

import (
    "fmt"
    "strconv"
)

func main() {
    fmt.Println(Float2Float(F()))
}

func F() float64 {
    f := 10.2
    return f * 1e2
}

func Float2Float(num float64) float64 {
    float_num, _ := strconv.ParseFloat(fmt.Sprintf("%.8f", num), 64)
    return float_num
}

調用Float2Float()即可解決精度問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM