我有一個像這樣的結構: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 打印
- 1 回答
- 0 關注
- 218 瀏覽
添加回答
舉報
0/150
提交
取消