golang float转string并去除末尾的0

写go时遇到一个场景要求将得到的浮点数保留两位小数,同时要去除末尾的0,试了一下 fmt.Sprintf 和 strconv.FormatFloat 都没能一步到位,最后只能先按小数位约分然后再转成字符串来解决这个问题,如果各位有更好的方式请在评论里指教一下

go 复制代码
package main

import (
	"fmt"
	"math"
	"strconv"
)

func main() {

	var f1 float64 = 9548
	var f2 float64 = 951.200
	var f3 float64 = 95445.12465461315

	fmt.Println("fmt.Sprintf 格式化")
	fmt.Println(fmt.Sprintf("%.2f", f1))
	fmt.Println(fmt.Sprintf("%.2f", f2))
	fmt.Println(fmt.Sprintf("%.2f", f3))

	fmt.Println("strconv.FormatFloat 格式化")
	fmt.Println(strconv.FormatFloat(f1, 'f', 2, 64))
	fmt.Println(strconv.FormatFloat(f1, 'f', -1, 64))
	fmt.Println(strconv.FormatFloat(f2, 'f', -1, 64))
	fmt.Println(strconv.FormatFloat(f3, 'f', -1, 64))

	fmt.Println("round约分后 格式化")
	roundedNum := RoundedNum(f1, 2)
	fmt.Println(strconv.FormatFloat(roundedNum, 'f', -1, 64))
	fmt.Println(strconv.FormatFloat(RoundedNum(f2, 2), 'f', -1, 64))
	fmt.Println(strconv.FormatFloat(RoundedNum(f3, 2), 'f', -1, 64))
}

func RoundedNum(num float64, precision int) float64 {
	roundedNum := math.Round(num*math.Pow10(precision)) / math.Pow10(precision)
	return roundedNum
}
相关推荐
小林熬夜学编程17 分钟前
【MySQL】第九弹---掌握SQL关键操作:更新、删除、插入与聚合分析的秘诀
linux·开发语言·数据库·mysql
hhw19911221 分钟前
JavaScript知识点1
开发语言·前端·javascript
a0023450014 小时前
python类型转换&深浅拷贝
开发语言·python
2301_766536055 小时前
调试无痛入手
开发语言·前端
+7205 小时前
Java 的 HttpClient 中使用 POST 请求传递参数
java·开发语言
@大迁世界6 小时前
构建 Next.js 应用时的安全保障与风险防范措施
开发语言·前端·javascript·安全·ecmascript
_extraordinary_6 小时前
Linux基本指令(三)+ 权限
linux·运维·服务器
青春:一叶知秋7 小时前
Reactor模型说明
运维·服务器
粉03217 小时前
Keeppalived 实现Nginx 的高可用集群
java·服务器·nginx