2017-02-27 322 views
0

我使用golang的bigint作爲長期運行服務的計數器,其中統計計數器可能長期溢出常規uint64;但偶爾我需要計算一下自節目開始以來的平均速度是多少?需要像float(bigint)/time.Since(beginning).Seconds()這樣的部門;轉換精度輸球的速率計算如何將golang math/big int轉換爲float?

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

但這種float64(bigint)接受不實際工作,我看到的圖書館有「bigint.Uint64()的轉換,但如果溢出一個它的不確定常規uint64;我想知道爲什麼標準庫不提供一個.Float64()方法?並沒有任何解決辦法如何讓一個浮動

回答

-2
package main 

import (
    "fmt" 
) 

func main() { 
    var i uint64 = 10 
    f := float64(i)//e.g your uint64 is i 
    fmt.Printf("f is %f\n", f) 
} 

The Go Playground

5

可以使用Float.SetInt方法轉換big.Intbig.Float

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

然後你就可以轉換f爲float64所接受的準確性,或使用big.Float方法更準確計算輸出。

+0

謝謝;我再次閱讀文檔,只是意識到'func(z * Float)SetInt(x * Int)* Float'正是我所需要的 – user5672998

+1

您也可以使用'big.Rat'來按照您所提到的持續時間進行除法你對如何擔心準確性感到擔憂。 – djd

相關問題