为了账号安全,请及时绑定邮箱和手机立即绑定

将浮点数格式化为 n 个小数位且没有尾随零

将浮点数格式化为 n 个小数位且没有尾随零

Go
喵喔喔 2021-10-18 17:17:17
我想显示一个带有整个整数部分和小数部分最多两位小数的浮点数,没有尾随零。http://play.golang.org/p/mAdQl6erWX:// Desired output: // "1.9"// "10.9"// "100.9"fmt.Println("2g:")fmt.Println(fmt.Sprintf("%.2g", 1.900)) // outputs "1.9"fmt.Println(fmt.Sprintf("%.2g", 10.900)) // outputs "11"fmt.Println(fmt.Sprintf("%.2g", 100.900)) // outputs "1e+02"fmt.Println("\n2f:")fmt.Println(fmt.Sprintf("%.2f", 1.900)) // outputs "1.90"fmt.Println(fmt.Sprintf("%.2f", 10.900)) // outputs "10.90"fmt.Println(fmt.Sprintf("%.2f", 100.900)) // outputs "100.90"格式化2g有一个问题,当整数增加数量级时它开始四舍五入。此外,它有时会显示带有e.格式化2f有一个问题,它会显示尾随零。我可以编写一个删除尾随零的后处理函数,但我宁愿使用Sprintf.这可以使用通用方式完成Sprintf吗?如果没有,有什么好的方法可以做到这一点?
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

不确定Sprintf但要让它起作用。修剪正确,0然后.。


fmt.Println(strings.TrimRight(strings.TrimRight(fmt.Sprintf("%.2f", 100.900), "0"), ".")) // 100.9

fmt.Println(strings.TrimRight(strings.TrimRight(fmt.Sprintf("%.2f", 100.0), "0"), ".")) // 100



查看完整回答
反对 回复 2021-10-18
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我使用以下功能来实现相同的目的:


//return 45.00 with "45" or 45.50 with "45.5"

func betterFormat(num float32) string {

    s := fmt.Sprintf("%.4f", num)

    return strings.TrimRight(strings.TrimRight(s, "0"), ".")

}


查看完整回答
反对 回复 2021-10-18
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信