go - 去浮动零除法编译器错误
问题描述
这种行为有何意义?只打印编译器警告而不是错误不是更有意义吗?
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:除以零
解决方案
Golang 数字常量是特殊的。它们没有直接映射到任何 IEEE754 浮点类型,例如,它们不能存储无穷大或 -0。
从文档中:
数字常量表示任意精度的精确值并且不会溢出。因此,没有常数表示 IEEE-754 负零、无穷大和非数字值。
这个选择带来了一些力量,因为它减少了常量溢出:
var x float64 = 1e1000 / 1e999 // yes, this is 10
如果你需要一个无穷大的值,你可以这样做
var x float64 = math.Inf(1)
推荐阅读
- c - 如何将数据(行)添加到 GtkListBox (C)
- python - 无法在 appium/python 中找到元素
- ios - 如何使用 cocoapods 和工作区构建一个反应原生项目?
- javascript - Intro.Js 无法在 PHP 上运行
- typescript - 如何在 TypeScript 中使用本地库开发项目?
- laravel - 多个表的 Laravel Eloquent 关系
- java - Java Runtime.getRuntime().exec 只执行第一行
- spring - 如何解决spring控制器中绑定枚举的问题
- sql-server - sql 合并问题 - 更新与源不匹配
- r - 如何用 NA 按组对变量求和?