30

私はもともとこれを試しましたが、% 演算子は float64 に対して定義されていません。

func main(){
    var a float64
    a = 1.23
    if a%1 == 0{
        fmt.Println("yay")
    }else{
        fmt.Println("you fail")
    }
}
4

5 に答える 5

4

math.Modf次の関数を使用できます。

const epsilon = 1e-9 // Margin of error
if _, frac := math.Modf(math.Abs(a)); frac < epsilon || frac > 1.0 - epsilon {
    // ...
}

epsilon浮動小数点演算は正確ではないため、ここで必要です (例float64(.3)+float64(.6)+float64(.1) != 1)

godoc から:

func Modf(f float64) (int float64, frac float64)

Modf は、合計が f になる整数および小数の浮動小数点数を返します。どちらの値も f と同じ符号です。

于 2016-02-02T21:21:30.607 に答える
-1

次のコードが役立つと思いますが、

func main(){
    var (
          a float64
          b float64
          c float64
    ) 
    a = 1.23
    b = float64(int64(a))
    c = a - b
    if c > 0 {
        fmt.Println("Not a Whole Number")
    } else {
        fmt.Println("Whole Number")
    }
}
于 2013-05-14T04:06:12.827 に答える