我是 Go 新手,目前正在关注A Tour of Go。
我目前在页面Numeric Constants。下面是在该页面上运行的代码的精简版本:
package main
import "fmt"
const Big = 1 << 100
func needFloat(x float64) float64 {
return x * 0.1
}
func main() {
fmt.Println(needFloat(Big))
// fmt.Printf("Type of Big %T", Big)
}
此代码使用输出成功编译1.2676506002282295e+29
但是,以下代码不会编译并给出错误:
package main
import "fmt"
const Big = 1 << 100
func needFloat(x float64) float64 {
return x * 0.1
}
func main() {
fmt.Println(needFloat(Big))
fmt.Printf("Type of Big %T", Big)
}
输出: ./prog.go:9:13: constant 1267650600228229401496703205376 overflows int
你认为为什么会发生这种情况?我希望你能解释一下。
心有法竹
元芳怎么了
翻翻过去那场雪
相关分类