使用 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.Sprintf
并strconv.FormatFloat
用相同的字符串被窝里格式化程序,所以应该给予同样的结果。
如果数字应该格式化的精度是可变的,那么使用 可能更容易FormatFloat
,因为它避免了像使用Sprintf
. 如果它永远不会改变,那么你可以使用任何一个。
最后一个参数FormatFloat
控制值的舍入方式。从文档:
假设原始数据是从 bitSize 位的浮点值(32 表示 float32,64 表示 float64)中获得的,则对结果进行舍入
因此,如果您正在使用float32
示例代码中的值,则传递32
是正确的。
- 2 回答
- 0 关注
- 337 浏览
添加回答
举报
0/150
提交
取消