在A Tour of Go 的Numeric Constants部分中,代码是
package main
import "fmt"
const (
// Create a huge number by shifting a 1 bit left 100 places.
// In other words, the binary number that is 1 followed by 100 zeroes.
Big = 1 << 100
// Shift it right again 99 places, so we end up with 1<<1, or 2.
Small = Big >> 99
)
func needInt(x int) int { return x*10 + 1 }
func needFloat(x float64) float64 { return x * 0.1 }
func main() {
fmt.Println(needInt(Small))
fmt.Println(needFloat(Small))
fmt.Println(needFloat(Big))
fmt.Println(Big * 0.1) //one
fmt.Println(Big / 10) //two
}
fmt.Println(Big*0.1)输出1.2676506002282295e+29,但fmt.Println(Big / 10)抛出错误:constant 126765060022822940149670320537 overflows int,它们之间有什么区别。
沧海一幻觉
相关分类