我使用golang的bigint作为长期服务的计数器,统计计数器可能会长期溢出常规uint64; 但偶尔我需要计算一些类似于程序开始以来的平均费率?需要分工float(bigint) / time.Since(beginning).Seconds(); 在费率计算中,转换的精确度损失是可以接受的
https://golang.org/pkg/math/big/#Int.Uint64
但是这种float64(bigint)实际上并不起作用,我看到库有'bigint.Uint64()'转换但是如果溢出普通的uint64则它是未定义的; 我想知道为什么标准库没有提供.Float64()方法?是否有任何解决方法如何获得浮动
Jim*_*imB 10
您可以使用该方法将a转换big.Int为a .big.FloatFloat.SetInt
i := big.NewInt(12345)
f := new(big.Float).SetInt(i)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用f可接受的精度转换为float64,或使用big.Float方法更精确地计算输出.
| 归档时间: |
|
| 查看次数: |
3963 次 |
| 最近记录: |