作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
假设我有一个包含 2 个项目的数组,其类型为字符串/ float 。对于 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
动词是默认格式,对于 float 意味着/恢复为 %g
%e for large exponents, %f otherwise. Precision is discussed below.
如果您总是想要“小数点但没有指数,例如 123.456”,请明确使用 %f
。
但是你只能将它用于 float ,所以你必须检查你打印的值的类型。为此,您可以使用 type switch 或 type assertion 。
例子:
switch v.(type) {
case float64, float32:
fmt.Printf("%f\n", v)
default:
fmt.Printf("%v\n", v)
}
输出(在 Go Playground 上尝试):
mydata
1234567890.123000
关于go - 如何在没有科学记数法的情况下在 Golang 中将 float 打印为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337330/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!