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

Men*_*Wei 10 go

假设我有一个包含2个项目的数组,其类型为string/float.如何在没有浮动项目的科学记号的情况下将它们打印在一起.

例如:

package main

import (
    "fmt"
)

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

输出将是

MYDATA

1.234567890123e + 09

我想要的是

MYDATA

1234567890.123

icz*_*cza 8

的打包文档fmt对此进行了说明:%v动词是默认格式,对于浮点数,它表示/还原%g

%e用于大指数,否则%f。精度将在下面讨论。

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

但是您只能将其用于浮点数,因此必须检查要打印的值的类型。为此,您可以使用类型开关类型断言

例:

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

输出(在Go Playground上尝试):

mydata
1234567890.123000
Run Code Online (Sandbox Code Playgroud)