这种行为有何意义?仅仅打印一个编译器警告而不是错误不是很有意义吗?
func main() {
var y float64 = 0.0
var x float64 = 4.0 / y
fmt.Println(x)
}
+ Inf
func main() {
var x float64 = 4.0 / 0.0
fmt.Println(x)
}
prog.go:9:22:除以零
答案 0 :(得分:3)
Golang数字const是特殊的。它们没有直接映射到任何IEEE754浮点类型,也不能存储无穷或例如-0。
数字常数表示任意精度的精确值,并且不会溢出。因此,没有常量表示IEEE-754负零,无穷大和非数字值。
此选择带来了一些功能,因为它减少了常量的溢出:
var x float64 = 1e1000 / 1e999 // yes, this is 10
如果您需要无穷大值,可以这样做
var x float64 = math.Inf(1)