我正在尝试用 Go 进行简单的除法。
fmt.Println(3/10)
这会打印 0 而不是 0.3。这有点奇怪。有人可以分享一下这背后的原因是什么吗?我想在 Go 中执行不同的算术运算。
Thanks
二元运算的操作数3 / 10
是无类型常量。规格说的是关于无类型常量的二元运算 https://golang.org/ref/spec#Constant_expressions
如果二元运算的操作数是不同类型的无类型常量,则该运算以及(对于非布尔运算)结果将使用此列表后面出现的类型:整数、符文、浮点、复数。
Because 3
and 10
是无类型整型常量,表达式的值是无类型整型(0
在这种情况下)。
要获得浮点常量结果,操作数之一必须是浮点常量。以下表达式计算结果为无类型浮点常量0.3
:
3.0 / 10.0
3.0 / 10
3 / 10.0
当除法运算具有无类型常量操作数和类型化操作数时,类型化操作数决定表达式的类型。确保键入的操作数是float64
得到一个float64
result.
下面的表达式convert https://go.dev/ref/spec#Conversions int
变量到afloat64
得到float64
result 0.3
:
var i3 = 3
var i10 = 10
fmt.Println(float64(i3) / 10)
fmt.Println(3 / float64(i10))
运营示范游乐场 https://go.dev/play/p/Uy0yTzbyAKh.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)