如何在 Go 中执行除法

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

fmt.Println(3/10)

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


鸿蒙传说
浏览 175回答 2
2回答

红糖糍粑

该表达式3 / 10是一个无类型的常量表达式。规范 说这是关于常量表达式如果二元运算的操作数是不同种类的无类型常量,则运算和(对于非布尔运算)结果使用此列表后面出现的种类:整数、符文、浮点数、复数。因为3和10是无类型整数常量,所以表达式的值是一个无类型整数(0在这种情况下)。操作数之一必须是浮点常量,结果为浮点常量。以下表达式计算为无类型浮点常量0.3:3.0 / 10.03.0 / 103 / 10.0也可以使用类型化常量。以下表达式计算为float64常量0.3:float64(3) / float64(10)float64(3) / 103 / float64(10)打印上述任何表达式都会打印0.3. 例如,fmt.Println(3.0 / 10)打印0.3.

明月笑刀无情

正如@Cerise和根据规范所提到的算术运算符应用于数值并产生与第一个操作数相同类型的结果。在这种情况下,只有第一个操作数需要是浮点数。fmt.Println(3.0/10)fmt.Println(float64(3)/10)// 0.3 0.3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go