【发布时间】:2019-08-25 19:05:46
【问题描述】:
在 Go 中,为什么没有直接计算整数数据类型绝对值的函数?目前,所有整数值都必须类型转换为float64,然后传递给math.Abs(),它返回一个float64,它必须再次类型转换为整数。
此代码引发./prog.go:12:39: cannot use x (type int64) as type float64 in argument to math.Abs 错误,因为 Go 是一种静态类型语言,因此它不允许使用不同的数据类型:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println("Hello, playground")
var x int64 = -10
fmt.Println("Abolute value ", math.Abs(x))
}
【问题讨论】:
-
将整数转换为浮点数以使用
math包,然后再转换回整数几乎从来都不是正确的做法。大多数简单的math函数存在于float64的唯一原因是浮点数通常有许多极端情况(例如涉及NaN 和无穷大),这些情况很难正确处理;整数没有这些问题。
标签: go casting absolute-value