从[]个字节中解析浮点值的最佳方法是什么?

时间:2019-10-19 16:52:31

标签: go byte data-conversion

我有一个函数,可以简单地使用ioutil.ReadFile()读取文件。返回的类型为[]byte,尽管该值本身可以表示为浮点数。

我正在以这种方式转换[]byte(其中value是从读取文件的函数返回的[]byte):

var floatValue float64
fmt.Fscanf(bytes.NewReader(value), "%f", &floatValue)

这真的是从[]byte中提取/解析有效浮点值的唯一方法吗?有一个类似的discussion,但看起来它并没有真正走到任何地方。

1 个答案:

答案 0 :(得分:0)

您可以轻松地使用strconv.ParseFloat,只需先将[]byte转换为字符串即可。与创建读取器和使用类似scanf的函数进行扫描相比,这无疑会减少开销。

sb := []byte("3.1415")
s := string(sb)

f, err := strconv.ParseFloat(s, 64)
if err != nil {
    panic("whoops!")
}

fmt.Printf("%f\n", f)

输出:

3.141500