一尘不染

如何在 Go 中执行除法

go

我正在尝试在 Go 中执行一个简单的除法。

fmt.Println(3/10)

这将打印 0 而不是 0.3。这有点奇怪。有人可以分享这背后的原因吗?我想在 Go 中执行不同的算术运算。

谢谢


阅读 471

收藏
2021-11-29

共1个答案

一尘不染

该表达式3 / 10是一个无类型的常量表达式。规范 说这是关于常量表达式

如果二元运算的操作数是不同类型的无类型常量,则运算和(对于非布尔运算)结果使用此列表后面出现的类型:整数、符文、浮点数、复数。

因为310是无类型整数常量,所以表达式的值是一个无类型整数(0在这种情况下)。

操作数之一必须是浮点常量,结果为浮点常量。以下表达式计算为无类型浮点常量0.3

3.0 / 10.0
3.0 / 10
3 / 10.0

也可以使用类型化常量。以下表达式计算为float64常量0.3

float64(3) / float64(10)
float64(3) / 10
3 / float64(10)

打印上述任何表达式都会打印0.3. 例如,fmt.Println(3.0 / 10)打印0.3.

2021-11-29