我使用golang的bigint作为长期服务的计数器,统计计数器可能会长期溢出常规uint64;但偶尔我需要计算一下类似程序开始以来的平均费率?需要像float(bigint) / time.Since(beginning).Seconds()
这样的师;在费率计算中可以接受转换的精确损失
https://golang.org/pkg/math/big/#Int.Uint64
但是这种float64(bigint)
实际上并不起作用,我看到图书馆有“bigint.Uint64()'转换,但如果溢出常规uint64则不确定;我想知道为什么标准库没有提供.Float64()
方法?并且有任何解决方法如何获得浮动
答案 0 :(得分:10)
您可以使用Float.SetInt
方法将big.Int
转换为big.Float
。
i := big.NewInt(12345)
f := new(big.Float).SetInt(i)
然后,您可以将f
转换为具有可接受精度的float64,或使用big.Float
方法更准确地计算输出。