为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中执行除法

如何在 Go 中执行除法

Go
鸿蒙传说 2021-11-08 18:55:44
我正在尝试在 Go 中执行一个简单的除法。fmt.Println(3/10)这将打印 0 而不是 0.3。这有点奇怪。有人可以分享这背后的原因吗?我想在 Go 中执行不同的算术运算。
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

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


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


因为3和10是无类型整数常量,所以表达式的值是一个无类型整数(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-08
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

正如@Cerise和根据规范所提到的


算术运算符应用于数值并产生与第一个操作数相同类型的结果。


在这种情况下,只有第一个操作数需要是浮点数。


fmt.Println(3.0/10)

fmt.Println(float64(3)/10)

// 0.3 0.3


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信