Golang 无法使用 math.Float64frombits 将 []byte("1575455669.4") 转换为 float64

Golang cannot convert []byte("1575455669.4") to float64 using math.Float64frombits

我有以下代码:

x := []byte("1575455669.4")
bits := binary.LittleEndian.Uint64(x)
f := math.Float64frombits(bits)

在调用 fmt.Println(f) 时,我预计 1.5754556694e+09。但是我最终得到 1.451098468672448e-47

当我尝试通过 strconv.ParseFloat(string(x), 64) 进行相同的转换时,我得到了正确的结果。我在这里做错了什么?

这个:

x := []byte("1575455669.4")

将为您提供 "1575455669.4" 字符串的(UTF-8 编码)字节。这与使用 IEEE 754 标准的浮点数 1575455669.4 的内存表示无关。但是你接下来要做的只是假设:

bits := binary.LittleEndian.Uint64(x)
f := math.Float64frombits(bits)

你有一个以 10 为基数的字符串表示形式给出的数字,你必须使用 strconv.ParseFloat(string(x), 64) 来解析它并将其作为 float64.