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
}
相关推荐
z落落2 小时前
C# 泛型方法(原理、类型推断、多泛型参数)+泛型效率(普通类型 VS Object装箱 VS 泛型)
开发语言·c#
L_09072 小时前
【C++】异常
开发语言·c++
司悠2 小时前
【解决在vscode里开服务器登录codeX后发消息会一直reconnecting】
服务器·ide·vscode
倔强的石头1062 小时前
Fooocus开源神器+cpolarAI让绘画告别服务器依赖
运维·服务器·cpolar
Ajie'Blog2 小时前
Copilot Agent Tasks API 开放:AI 编程开始进入后台任务时代
服务器·前端·javascript·人工智能·copilot·ai编程
wei_shuo2 小时前
服务器挂了等用户投诉才发现?我用Beszel搭了轻量监控系统,宕机第一时间通知我
运维·服务器
王码码20352 小时前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
世辰辰辰3 小时前
批量修改图片/文本名子
开发语言·python·批量修改文件名
剑神一笑4 小时前
Linux ls 命令深度解析:从目录遍历到颜色输出的实现原理
linux·服务器·数据库
z落落4 小时前
C# 四种特殊类:抽象类、密封类、静态类、部分类
开发语言·c#