【发布时间】:2021-05-13 16:39:00
【问题描述】:
我为一个 API 创建了一个结构,我从中获得了总价。该数字类似于 93.6400000000000005684341886080801486968994140625 我已将结构中的类型设置为float64,但是在将数据解析为结构后访问数据时,数字会变成类似2664或完全错误的数字,以千计。是我使用的类型错误还是其他原因?
【问题讨论】:
-
无法调试我们看不到的代码。
我为一个 API 创建了一个结构,我从中获得了总价。该数字类似于 93.6400000000000005684341886080801486968994140625 我已将结构中的类型设置为float64,但是在将数据解析为结构后访问数据时,数字会变成类似2664或完全错误的数字,以千计。是我使用的类型错误还是其他原因?
【问题讨论】:
不确定你做了什么来获取数据,但这段代码以精确的精度获取数据
package main
import (
"encoding/json"
"fmt"
)
type Bill struct {
Total float64 `json:"total"`
}
func main() {
data := []byte(`{"total": 93.6400000000000005684341886080801486968994140625}`)
var b Bill
err := json.Unmarshal(data, &b)
if err != nil {
panic(err)
}
fmt.Printf("%.100f", b.Total)
}
【讨论】: