我将golang的bigint用作长期服务的计数器,长期来看,统计信息计数器可能会在常规uint64上溢出;但是有时我需要计算一下自计划开始以来的平均利率是多少?需要像float(bigint) / time.Since(beginning).Seconds()这样的除法;速率计算中可接受的转换精度损失

https://golang.org/pkg/math/big/#Int.Uint64

但是这种float64(bigint)实际上不起作用,我看到该库具有'bigint.Uint64()'转换,但是如果溢出常规uint64,则它是未定义的;我想知道为什么标准库没有提供to .Float64()方法?是否有任何变通方法如何获取float


您可以使用Float.SetInt方法将big.Int转换为big.Float

然后,您可以将f转换为具有公认精度的float64,也可以使用big.Float方法以更高的精度计算输出。