为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Go 将浮点数格式化为字符串

如何使用 Go 将浮点数格式化为字符串

Go
莫回无 2021-06-14 06:11:53
使用 Go 我试图找到将浮点数格式化为字符串的“最佳”方法。我一直在寻找示例,但是我找不到任何可以专门回答我的问题的内容。我想要做的就是使用“最佳”方法将浮点数格式化为字符串。小数位数可能会有所不同,但都是已知的(例如,2 或 4 或零)。我想要实现的一个例子如下。基于下面的示例,我应该使用fmt.Sprintf()或strconv.FormatFloat()还是其他什么?而且,每个的正常用法和每个之间的区别是什么?我也不明白在以下当前有 32 的情况下使用 32 或 64 的重要性:strconv.FormatFloat(float64(fResult), 'f', 2, 32)例子:package mainimport (    "fmt"    "strconv")func main() {    var (        fAmt1 float32 = 999.99        fAmt2 float32 = 222.22    )    var fResult float32 = float32(int32(fAmt1*100) + int32(fAmt2*100)) / 100    var sResult1 string = fmt.Sprintf("%.2f", fResult)    println("Sprintf value = " + sResult1)    var sResult2 string = strconv.FormatFloat(float64(fResult), 'f', 2, 32)    println("FormatFloat value = " + sResult2)}
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

两者fmt.Sprintfstrconv.FormatFloat用相同的字符串被窝里格式化程序,所以应该给予同样的结果。

如果数字应该格式化的精度是可变的,那么使用 可能更容易FormatFloat,因为它避免了像使用Sprintf. 如果它永远不会改变,那么你可以使用任何一个。

最后一个参数FormatFloat控制值的舍入方式。从文档:

假设原始数据是从 bitSize 位的浮点值(32 表示 float32,64 表示 float64)中获得的,则对结果进行舍入

因此,如果您正在使用float32示例代码中的值,则传递32是正确的。


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信