如何使用Go将浮点数格式化为字符串
我正在尝试使用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)
}
回答:
两者fmt.Sprintf
并strconv.FormatFloat
用相同的字符串被窝里格式化程序,所以应该给予同样的结果。
如果将数字格式化的精度是可变的,则使用起来可能会更容易FormatFloat
,因为它避免了像那样构造格式字符串的需要Sprintf
。如果它永远不会改变,那么您可以使用其中任何一个。
最后一个参数FormatFloat
控制值的取整方式。从文档中:
假设原始结果是从bitSize位的浮点值(float32为32,float64为64)获得的,则四舍五入结果
因此,如果您float32
像示例代码中那样使用值,那么传递32
是正确的。
以上是 如何使用Go将浮点数格式化为字符串 的全部内容, 来源链接: utcz.com/qa/410262.html