2017-10-04 91 views

回答

5

在進行轉換之前,您可以比較float64的值與math.MaxInt64math.MinInt64

4

您可能只是想事先檢查;如果轉換將安全執行或溢出將發生。

由於John Weldon建議,

package main 

import (
    "fmt" 
    "math" 
) 

func main() { 
    var (
     a int64 
     f64 float64 
    ) 

    // This number doesn't exist in the float64 world, 
    // just a number to perform the test. 
    f64 = math.Floor(9223372036854775808.5) 
    if f64 >= math.MaxInt64 || f64 <= math.MinInt64 { 
     fmt.Println("f64 is out of int64 range.") 
     return 
    } 

    a = int64(f64) 
    fmt.Println(a) 
} 

Go Playground

我希望這會回答你的問題。
此外,我真的很想知道是否有更好的解決方案。 :)

相關問題