go 语言 有很多位小数的 big.Float 转换成 string 类型如何不使用科学计数法。

2020-09-22 18:09:05 +08:00
 rimutuyuan
res, _ := new(big.Float).SetString("100000000000")
res = res.Quo(res, big.NewFloat(1e18))
fmt.Println(res.String())

输出 1e-07

如何输出 0.000001 呢
2044 次点击
所在节点    问与答
2 条回复
luwill
2020-09-22 18:39:26 +08:00
https://golang.org/src/math/big/ftoa.go

读一下 math/big 的源代码,你会发现 String 调用的 Text 方法。
```
// String formats x like x.Text('g', 10).
// (String must be called explicitly, Float.Format does not support %s verb.)
func (x *Float) String() string {
return x.Text('g', 10)
}
```
Text 支持 formt 参数,你要的`res.Text('f', 10)`

// 'f' -ddddd.dddd, no exponent
lysS
2020-09-22 18:54:32 +08:00
你可以用这个
a := 0.0000001
fmt.Println(strconv.FormatFloat(float64(a), 'f', 9, 64))
//
0.000000100

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX