99 ) func needInt(x int) int { return x*1-6ren">
gpt4 book ai didi

go - big int 在 golang 中如何表示?

转载 作者:IT王子 更新时间:2023-10-29 01:58:21 28 4
gpt4 key购买 nike

这段代码是对的,

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))
}

但是当我添加

fmt.Println(Big)

我遇到一个错误:

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

我很困惑

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

为什么这两行代码没有报错

最佳答案

简短回答:Big 是无类型整数常量

常量表达式总是被精确计算;中间值和常量本身可能需要比语言中任何预先声明的类型所支持的精度大得多的精度。以下为法律声明:

const Huge = 1 << 100         // Huge == 1267650600228229401496703205376  (untyped integer constant)
const Four int8 = Huge >> 98 // Four == 4 (type int8)

引用 https://golang.org/ref/spec#Constant_expressions

这里在常量中你没有明确的说它是一个整数如果说它会失败

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

会显示错误

tmp/sandbox351128854/main.go:9: constant 1267650600228229401496703205376 overflows int

关于go - big int 在 golang 中如何表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41339470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com