我最初尝试过这个,但是没有为float64定义%运算符.
func main(){
var a float64
a = 1.23
if a%1 == 0{
fmt.Println("yay")
}else{
fmt.Println("you fail")
}
}
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 23
假设您的数字适合a int64,您可以将浮点值与转换后的整数值进行比较,看看它们是否相同:
if a == float64(int64(a)) {
fmt.Println("yay")
} else {
fmt.Println("you fail")
}
Run Code Online (Sandbox Code Playgroud)
否则你可以使用这里math.Trunc详述的功能,例如:
if a == math.Trunc(a) {
fmt.Println("yay")
} else {
fmt.Println("you fail")
}
Run Code Online (Sandbox Code Playgroud)
那个应该在整个float64域内工作.
您可以使用该math.Modf功能:
const epsilon = 1e-9 // Margin of error
if _, frac := math.Modf(math.Abs(a)); frac < epsilon || frac > 1.0 - epsilon {
// ...
}
Run Code Online (Sandbox Code Playgroud)
epsilon这里是必要的,因为浮点数学不精确(例如float64(.3)+float64(.6)+float64(.1) != 1)
来自戈多克:
Run Code Online (Sandbox Code Playgroud)func Modf(f float64) (int float64, frac float64)Modf 返回总和为 f 的整数和小数浮点数。两个值与 f 具有相同的符号。
| 归档时间: |
|
| 查看次数: |
8041 次 |
| 最近记录: |