私はもともとこれを試しましたが、% 演算子は float64 に対して定義されていません。
func main(){
var a float64
a = 1.23
if a%1 == 0{
fmt.Println("yay")
}else{
fmt.Println("you fail")
}
}
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 と同じ符号です。
次のコードが役立つと思いますが、
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")
}
}