Hola metalfox6383:
Hace tiempo tuve un problema semejante y en realidad nunca pude encontrar el porqué, sin embargo tiene que ver con la asignación del valor a la variable en el mismo SELECT. Una posible solución es hacerlo en partes, es decir, primero asignar el valor a tu variable y después hacer el select, es decir, algo como esto:
Código:
SET @a := 992.7500;
SELECT @a, ROUND(@a * (1 + 18 / 100), 2) AS Total;
De esta manera desde la primera ejecución obtienes el valor correcto:
Código MySQL:
Ver originalmysql
> SET @a
:= 992.7500;Query OK, 0 rows affected (0.00 sec)
+----------+---------+
| @a | Total |
+----------+---------+
| 992.7500 | 1171.45 |
+----------+---------+
Haz la prueba y nos comentas, y si descubres el porqué sucede esto coméntalo en el foro para tenerlo en cuenta.
Saludos
Leo.