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
}
相关推荐
2501_941236217 分钟前
C++与Node.js集成
开发语言·c++·算法
菠菠萝宝1 小时前
【Java手搓RAGFlow】-3- 用户认证与权限管理
java·开发语言·人工智能·llm·openai·qwen·rag
llxxyy卢2 小时前
通关upload-labs(14-21)加分析源码
linux·运维·服务器
csdn_wuwt3 小时前
前后端中Dto是什么意思?
开发语言·网络·后端·安全·前端框架·开发
JosieBook3 小时前
【Rust】基于Rust 设计开发nginx运行日志高效分析工具
服务器·网络·rust
print(未来)3 小时前
C++ 与 C# 的性能比较:选择合适的语言进行高效开发
java·开发语言
四问四不知3 小时前
Rust语言入门
开发语言·rust
JosieBook3 小时前
【Rust】 基于Rust 从零构建一个本地 RSS 阅读器
开发语言·后端·rust
云边有个稻草人3 小时前
部分移动(Partial Move)的使用场景:Rust 所有权拆分的精细化实践
开发语言·算法·rust
一晌小贪欢4 小时前
Pandas操作Excel使用手册大全:从基础到精通
开发语言·python·自动化·excel·pandas·办公自动化·python办公