作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试在 Go 中执行一个简单的除法。
fmt.Println(3/10)
这会打印 0 而不是 0.3。这有点奇怪。有人可以分享这背后的原因吗?我想在 Go 中执行不同的算术运算。
谢谢
最佳答案
二元运算 3/10
的操作数是无类型常量。规范says this about binary operations with untyped constants
if the operands of a binary operation are different kinds of untyped constants, the operation and, for non-boolean operations, the result use the kind that appears later in this list: integer, rune, floating-point, complex.
因为 3
和 10
是无类型整数常量,所以表达式的值是无类型整数(本例中为 0
)。
要获得浮点常数结果,其中一个操作数必须是浮点常数。以下表达式计算为无类型浮点常量 0.3
:
3.0 / 10.0
3.0 / 10
3 / 10.0
当除法运算有一个无类型的常量操作数和一个有类型的操作数时,有类型的操作数决定了表达式的类型。确保键入的操作数是 float64
以获得 float64
结果。
下面的表达式convert int
变量到 float64
得到 float64
结果 0.3
:
var i3 = 3
var i10 = 10
fmt.Println(float64(i3) / 10)
fmt.Println(3 / float64(i10))
关于math - 如何在 Go 中执行除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815400/
我是一名优秀的程序员,十分优秀!