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
}
相关推荐
缺点内向21 分钟前
C#编程实战:如何为Word文档添加背景色或背景图片
开发语言·c#·自动化·word·.net
一起养小猫30 分钟前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
zhougl99640 分钟前
Java 所有关键字及规范分类
java·开发语言
java1234_小锋1 小时前
Java高频面试题:MyISAM索引与InnoDB索引的区别?
java·开发语言
2501_944525541 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
qq_417129251 小时前
C++中的桥接模式变体
开发语言·c++·算法
开源技术2 小时前
如何将本地LLM模型与Ollama和Python集成
开发语言·python
Hello World . .2 小时前
数据结构:队列
c语言·开发语言·数据结构·vim
clever1012 小时前
在QtCreator 4.10.2中调试qt程序qDebug()输出中文为乱码问题的解决
开发语言·qt
宴之敖者、2 小时前
Linux——\r,\n和缓冲区
linux·运维·服务器