A expressão 3 / 10
é uma expressão constante não digitada. A especificação diz isso sobre expressões constantes
se os operandos de uma operação binária são diferentes tipos de constantes não tipadas, a operação e, para operações não booleanas, o resultado usa o tipo que aparece mais tarde nesta lista: inteiro, runa, ponto flutuante, complexo.
Como 3
e 10
são constantes inteiras sem tipo, o valor da expressão é um número inteiro sem tipo ( 0
neste caso).
Um dos operandos deve ser uma constante de ponto flutuante para que o resultado seja uma constante de ponto flutuante. As seguintes expressões são avaliadas como a constante de ponto flutuante não digitada 0.3
:
3.0 / 10.0
3.0 / 10
3 / 10.0
Também é possível usar constantes digitadas. As seguintes expressões são avaliadas para a float64
constante 0.3
:
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
Imprimir qualquer uma das expressões acima será impresso 0.3
. Por exemplo, fmt.Println(3.0 / 10)
impressões 0.3
.
fmt.Println(float64(3) / float64(10))
dá0.3
.Conforme mencionado por @Cerise e de acordo com as especificações
Nesse caso, apenas o primeiro operando precisa ser um ponto flutuante.
fmt.Println(3.0/10) fmt.Println(float64(3)/10) // 0.3 0.3
Exemplo
fonte