首页 > 解决方案 > 去浮动零除法编译器错误

问题描述

这种行为有何意义?只打印编译器警告而不是错误不是更有意义吗?

func main() {
var y float64 = 0.0
var x float64 = 4.0 / y
fmt.Println(x)
}

+信息

func main() {
var x float64 = 4.0 / 0.0
fmt.Println(x)
}

prog.go:9:22:除以零

标签: godivide-by-zero

解决方案


Golang 数字常量是特殊的。它们没有直接映射到任何 IEEE754 浮点类型,例如,它们不能存储无穷大或 -0。

文档中

数字常量表示任意精度的精确值并且不会溢出。因此,没有常数表示 IEEE-754 负零、无穷大和非数字值。

这个选择带来了一些力量,因为它减少了常量溢出:

var x float64 = 1e1000 / 1e999 // yes, this is 10

如果你需要一个无穷大的值,你可以这样做

var x float64 = math.Inf(1)

推荐阅读