La expresión 3 / 10
es una expresión constante sin tipo. La especificación dice esto sobre expresiones constantes
si los operandos de una operación binaria son diferentes tipos de constantes sin tipo, la operación y, para operaciones no booleanas, el resultado utilizan el tipo que aparece más adelante en esta lista: entero, runa, punto flotante, complejo.
Como 3
y 10
son constantes enteras sin tipo, el valor de la expresión es un entero sin tipo ( 0
en este caso).
Uno de los operandos debe ser una constante de coma flotante para que el resultado sea una constante de coma flotante. Las siguientes expresiones se evalúan a la constante de punto flotante sin tipo 0.3
:
3.0 / 10.0
3.0 / 10
3 / 10.0
También es posible utilizar constantes escritas. Las siguientes expresiones se evalúan a la float64
constante 0.3
:
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
La impresión de cualquiera de las expresiones anteriores se imprimirá 0.3
. Por ejemplo, fmt.Println(3.0 / 10)
grabados 0.3
.
fmt.Println(float64(3) / float64(10))
da0.3
.Como lo menciona @Cerise y según las especificaciones
En este caso, solo el primer operando debe ser un punto flotante.
fmt.Println(3.0/10) fmt.Println(float64(3)/10) // 0.3 0.3
Ejemplo
fuente