2017-10-04 6 views
2

Golangのmath.Floorは、float64を返します。しかし、私はそれが整数を返すようにしたいと思います。 floor操作を実行した後に整数値を取得するにはどうすればよいですか? int(x)またはint32(x)またはint64(x)を使用できますか? float64の結果と整数の範囲が一致しない可能性があるので、操作に不正確さが生じます。golangの数学フロア関数から整数結果を得るには?

答えて

5

変換を実行する前にfloat64の値をmath.MaxInt64またはmath.MinInt64と比較できます。

4

事前に確認したいことがあります。変換が安全に実行される場合、またはオーバーフローが発生する場合

John Weldonが示唆したように、

Go Playground

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) 
} 

私はこれがあなたの質問に答えることを願っています。
また、もっと良い解決策があれば教えてください。 :)

関連する問題