如何将golang math / big int转换为float?

时间:2017-02-27 20:00:07

标签: go

我使用golang的bigint作为长期服务的计数器,统计计数器可能会长期溢出常规uint64;但偶尔我需要计算一下类似程序开始以来的平均费率?需要像float(bigint) / time.Since(beginning).Seconds()这样的师;在费率计算中可以接受转换的精确损失

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

但是这种float64(bigint)实际上并不起作用,我看到图书馆有“bigint.Uint64()'转换,但如果溢出常规uint64则不确定;我想知道为什么标准库没有提供.Float64()方法?并且有任何解决方法如何获得浮动

1 个答案:

答案 0 :(得分:10)

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

i := big.NewInt(12345)
f := new(big.Float).SetInt(i)

然后,您可以将f转换为具有可接受精度的float64,或使用big.Float方法更准确地计算输出。