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

使用 Go 我试图找到将浮点数格式化为字符串的“最佳”方法。我一直在寻找示例,但是我找不到任何可以专门回答我的问题的内容。我想要做的就是使用“最佳”方法将浮点数格式化为字符串。小数位数可能会有所不同,但都是已知的(例如,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)


}


莫回无
浏览 338回答 2
2回答

慕容3067478

两者fmt.Sprintf并strconv.FormatFloat用相同的字符串被窝里格式化程序,所以应该给予同样的结果。如果数字应该格式化的精度是可变的,那么使用 可能更容易FormatFloat,因为它避免了像使用Sprintf. 如果它永远不会改变,那么你可以使用任何一个。最后一个参数FormatFloat控制值的舍入方式。从文档:假设原始数据是从 bitSize 位的浮点值(32 表示 float32,64 表示 float64)中获得的,则对结果进行舍入因此,如果您正在使用float32示例代码中的值,则传递32是正确的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go