英文:
Printing two digits after decimal in go
问题
你可以使用Go语言中的fmt.Printf
函数来实现打印小数点后两位并进行四舍五入的功能。下面是一个示例代码:
package main
import "fmt"
func main() {
num1 := 1.222225
num2 := 1.356
fmt.Printf("%.2f\n", num1)
fmt.Printf("%.2f\n", num2)
}
运行以上代码,你将得到以下输出:
1.22
1.36
这样就实现了打印小数点后两位并进行四舍五入的要求。
英文:
I want to print two digits after decimal after rounding in GO language..
e.g 1.222225 should be printed as 1.22
1.356 should be printed as 1.36
How can i do it?
答案1
得分: 27
你可以这样写:
fmt.Printf("%.2f", 1.22225)
(参见 http://golang.org/pkg/fmt/)。
答案2
得分: 8
如果你使用fmt.Printf
函数,可以在格式化字符串中使用语法来打印指定精度的浮点数,如下所示。一般的语法是%.[数字位数]f
。
示例:
fmt.Printf("%.2f", 1.2222225) // 输出:1.22
fmt.Printf("%.2f", 1.356) // 输出:1.36
需要注意的是,四舍五入不会进行"进位":
fmt.Printf("%.1f", 1.346)
输出结果为1.3,而不是1.4。此外,负数的行为与预期相同:
fmt.Printf("%.2f", -1.356) // 输出:-1.36
英文:
If you use the fmt.Printf
function there is syntax in the formatting string that lets you print floats to a given level of precision like this. The general syntax is %.[numberofdigits]f
.
Examples:
fmt.Printf("%.2f" 1.2222225) // output: 1.22
fmt.Printf("%.2f", 1.356) // output: 1.36
One thing to note is that the round doesn't "carry"
fmt.Printf("%.1f", 1.346)
Will output 1.3, not 1.4. Additionally, negative numbers will behave as expected:
fmt.Printf("%.2f", -1.356) // output: -1.36
答案3
得分: 0
你可能想要使用具有固定.00精度的Decimal64p2
类型的十进制数,可以在这里找到更多信息:https://github.com/strongo/decimal
与fmt.Printf("%.1f", 1.346)
相比,它可以正确地进行四舍五入。
它非常适合存储精确的货币金额。
英文:
You may want to use a Decimal64p2
type of decimal with fixed .00 precision - https://github.com/strongo/decimal
Comparing to fmt.Printf("%.1f", 1.346)
it will round correctly.
It is efficient for storing exact amounts of money.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论