今天下一个测试程序,遇到下面这个问题:
本意是通过下面获得int64的最大值:
int64(math.Exp2(float64(64-1))-1)
但是,数值的结果却是-9223372036854775808。
请大佬赐教一下。
谢谢!
```
const (
MaxInt8 = 1<<7 - 1
MinInt8 = -1 << 7
MaxInt16 = 1<<15 - 1
MinInt16 = -1 << 15
MaxInt32 = 1<<31 - 1
MinInt32 = -1 << 31
MaxInt64 = 1<<63 - 1
MinInt64 = -1 << 63
MaxUint8 = 1<<8 - 1
MaxUint16 = 1<<16 - 1
MaxUint32 = 1<<32 - 1
MaxUint64 = 1<<64 - 1
)
```
这个是golang math包里的定义,也就是int64最大值可以直接用math.MaxInt64
#5
更多评论
已找到一种方式,就是通过63bit的uint64转成int64,但是不清楚为什么 int64(math.Exp2(float64(64-1))-1) 这样不行?是Exp2内置行数的bug么?
#1