我有以下代码:
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
。关于go - Golang无法使用math.Float64frombits将[] byte (“1575455669.4”)转换为float64,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59213049/