如何在没有科学记数法的情况下在Golang中将float打印为字符串

前端之家收集整理的这篇文章主要介绍了如何在没有科学记数法的情况下在Golang中将float打印为字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个包含2个项目的数组,其类型为string / float.
如何在没有浮动项目的科学记号的情况下将它们打印在一起.

例如:

package main

import (
    "fmt"
)

func main() {
    values := []interface{}{"mydata",1234567890.123}
    for _,v := range values{
        fmt.Printf("%v\n",v)
    }
}

输出将是

mydata

1.234567890123e+09

我想要的是

mydata

1234567890.123

fmt的软件包文档解释了它:%v动词是默认格式,对于浮动数字意味着/恢复为%g,这是

%e for large exponents,%f otherwise. Precision is discussed below.

如果您总是想要“小数点但没有指数,例如123.456”,请明确使用%f.

但是您只能将其用于浮动数字,因此您必须检查打印值的类型.为此,您可以使用type switchtype assertion.

例:

switch v.(type) {
case float64,float32:
    fmt.Printf("%f\n",v)
default:
    fmt.Printf("%v\n",v)
}

输出(在Go Playground上试试):

mydata
1234567890.123000

猜你在找的Go相关文章