亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 數學/大 Unmarshal 丟失精度

Golang 數學/大 Unmarshal 丟失精度

Go
慕勒3428872 2022-01-10 10:19:39
我有一個像這樣的結構:type Msg struct {    F1  *big.Float `json:"F1,string"`}然后我json從消息隊列中收到一條消息,然后我想將該 json 消息解組到我的Msg結構中:// jsonMsg = {"F1": "1000314.451234"}var msg Msgjson.Unmarshal(jsonMsg, &msg)但我得到了:fmt.Println("go object:",msg.F1.String()) // 1000314.45, precision lost因此,當我的字符串"1000314.451234"被解組為Msggolang 中的對象時,精度會丟失。我想知道這是否是錯誤?我怎樣才能獲得完整的精度?謝謝。
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

解組時不會丟失精度。當您將 Float 轉換為 String 以打印它時,它會“丟失”。


package main


import (

    "fmt"

    "encoding/json"

    "math/big"

)


type Msg struct {

    F1  *big.Float `json:"F1,string"`

}


func main() {

    jsonMsg := []byte(`{"F1": "1000314.451234"}`)

    var msg Msg

    json.Unmarshal(jsonMsg, &msg)

    fmt.Println("go object:",msg.F1.String())

    fmt.Printf("go object: %f", msg.F1)

}

此測試的輸出將是:


go object: 1000314.451

go object: 1000314.451234

所以只取決于你如何打印數據。Godoc fmt 打印


查看完整回答
反對 回復 2022-01-10
  • 1 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號