[英]big.Float GetString without rounding
我想看到結果:“3891113451447590234”沒有“3891113451447590400”
bigI,_ := big.NewInt(0).SetString("3891113451447590234", 10)
bigF := big.NewFloat(0).SetInt(bigI)
fmt.Println(bigF)
fmt.Println(bigF.String())
fmt.Println(bigF.SetMode(big.AwayFromZero).Text('f', 8))
fmt.Println(bigF.SetMode(big.AwayFromZero).Text('g', 20))
3.8911134514475904e+18
3.891113451e+18
3891113451447590400.00000000
3891113451447590400
big.NewFloat
函數將默認精度設置為53。
NewFloat分配並返回一個新的Float設置為x,精度為53,舍入模式為ToNearestEven。 如果x是NaN,則NewFloat使用ErrNaN發生混亂。
如果要設置更高精度的值,可以直接設置精度,也可以使用big.Float
的零值從精度0開始,該值確定首次設置值時所需的精度。
f1, _, _ := new(big.Float).SetPrec(128).SetMode(big.ToNearestEven).Parse("3891113451447590234", 10)
// equivalent to
// big.ParseFloat("3891113451447590234", 10, 128, big.ToZero)
fmt.Println(f1)
// 3.891113451447590234e+18
i, _ = new(big.Int).SetString("3891113451447590234", 10)
f2 = new(big.Float).SetInt(i)
fmt.Println(f2)
// 3.891113451447590234e+18
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.