Math 如何在围棋中进行除法

Math 如何在围棋中进行除法,math,go,floating-point,integer-division,Math,Go,Floating Point,Integer Division,我试图在围棋中执行一个简单的除法 fmt.Println(3/10) 这将打印0而不是0.3。这有点奇怪。有人能告诉我这背后的原因吗?我想在围棋中执行不同的算术运算 谢谢表达式3/10是一个非类型常量表达式。说明书 如果二元运算的操作数是不同类型的非类型常量,则该运算和(对于非布尔运算)结果将使用此列表后面显示的类型:整数、符文、浮点、复数 由于3和10是非类型化整数常量,因此表达式的值是非类型化整数(0) 其中一个操作数必须是浮点常量,才能将结果转换为浮点常量。以下表达式计算为非类型浮点常量

我试图在围棋中执行一个简单的除法

fmt.Println(3/10)
这将打印0而不是0.3。这有点奇怪。有人能告诉我这背后的原因吗?我想在围棋中执行不同的算术运算


谢谢表达式
3/10
是一个非类型常量表达式。说明书

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

由于
3
10
是非类型化整数常量,因此表达式的值是非类型化整数(
0

其中一个操作数必须是浮点常量,才能将结果转换为浮点常量。以下表达式计算为非类型浮点常量
0.3

3.0 / 10.0
3.0 / 10
3 / 10.0
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
也可以使用类型化常量。以下表达式计算为
float64
常量
0.3

3.0 / 10.0
3.0 / 10
3 / 10.0
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
打印上述任何表达式都将打印
0.3
。例如,
fmt.Println(3.0/10)
按照规范所述打印
0.3

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

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

fmt.Println(3.0/10)
fmt.Println(float64(3)/10)
// 0.3 0.3

我正在接受输入,假设它是百分比。例如,如果用户给出30,我必须执行30/100*somenumber。输入将始终是一个整数。在这种情况下如何执行除法?我尝试了fmt.Println(float64(3/10))但是它给了我0@VrushankDoshi:
fmt.Println(float64(3)/float64(10))
给出了
0.3
。是的!只是第一个操作数并不总是成功,如果“10”被检测为int,那么这将引发以下错误:无效操作:(不匹配的float64和int类型)您能告诉我,我缺少什么吗?基本上,我复制了示例部分中的代码,将
fmt.Println(3.0/10)
更改为
fmt.Println(3/10.0)
,得到了与更改第一个操作数相同的结果?可能在golang中发生了一些变化:)我不得不说我没有答案,第二个示例中的3似乎由于某种原因没有转换为int: