Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2016, 07:54
Avatar de BramSt
BramSt
 
Fecha de Ingreso: abril-2015
Mensajes: 117
Antigüedad: 9 años
Puntos: 5
¿Qué hay de diferente entre estas dos operaciones aritméticas en mysql?

Hola a todos. Siguiendo un pequeño tutorial, encuentro que estos dos casos dan resultados diferentes, pero no explica por qué. ¿Podríais ayudarme a comprenderlo?

Muchas gracias.

Se supone que es el máximo número entero que se puede almacenar en Mysql, multiplicado por 2 (número entero):

18446744073709551615*2;

Esto da como resultado (porque se sale del rango almacenable, claro):

Código MySQL:
Ver original
  1. ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(18446744073709551
  2. 615 * 2)'

Pero cuando haces la misma operación anterior, sólo que multiplicando por 2.0 (número flotante), tal que así:

18446744073709551615*2.0;

Resulta que sí devuelve un resultado válido:

36893488147419103230.0

Sabéis a qué se debe esto? No entiendo la diferencia que pueda haber entre multiplicar por 2 a hacerlo por 2.0...

Un saludo y muchas gracias de nuevo.





Pero si hago