dongsui0929 2016-12-27 05:25
浏览 158

大整数在golang中如何表示?

this code is right,

package main

import "fmt"

const (
    Big   = 1 << 100
    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))
}

But when i add

fmt.Println(Big)

I meet an error:

tmp/sandbox042871394/main.go:16: constant 1267650600228229401496703205376 overflows int

i am confused for

 const (
        Big   = 1 << 100
        Small = Big >> 99
    )

why there is no error for this two lines code.

  • 写回答

2条回答 默认 最新

  • douya7282 2016-12-27 06:00
    关注

    Big and Small are untyped constants.

    fmt.Println accepts interface{}. Constant is converted to its default type.

    The default type is int.

    评论

报告相同问题?