gpt4 book ai didi

go - 如何使用 Go 将 float 格式化为字符串

转载 作者:IT老高 更新时间:2023-10-28 13:06:28 26 4
gpt4 key购买 nike

使用 Go,我试图找到将 float 格式化为字符串的“最佳”方式。我一直在寻找示例,但是我找不到任何可以专门回答我的问题的东西。我要做的就是使用“最佳”方法将 float 格式化为字符串。小数位数可能会有所不同,但将是已知的(例如 2 或 4 或零)。下面是我想要实现的一个示例。

基于下面的示例,我应该使用 fmt.Sprintf() 还是 strconv.FormatFloat() 或其他什么?

而且,每个的正常用法和它们之间的区别是什么?

我也不明白在以下当前有 32 的情况下使用 32 或 64 的意义:

strconv.FormatFloat(float64(fResult), 'f', 2, 32)

例子:

package main

import (
"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.Sprintfstrconv.FormatFloat 都使用相同的字符串格式化例程,因此应该给出相同的结果。

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

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

It rounds the result assuming that the original was obtained from a floating-point value of bitSize bits (32 for float32, 64 for float64)

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

关于go - 如何使用 Go 将 float 格式化为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18951359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com