我想顯示一個帶有整個整數部分和小數部分最多兩位小數的浮點數,沒有尾隨零。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

泛舟湖上清波郎朗
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"), ".")
}
- 3 回答
- 0 關注
- 216 瀏覽
添加回答
舉報
0/150
提交
取消