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
.
我有以下代码:
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
.