Go Down

Topic: este Long no me hace caso (Read 460 times) previous topic - next topic

Togusha

Mi problema es que las variables long que declaro no toman los valores que deberían, y están a varios años luces de llenarse:

esto:
  unsigned long sal = 24*3600;
  Serial.println(sal);

me devuelve:       20.864
y deveria devolver 86.400

y esto:
  unsigned long sal = 12*30*24*3600;
  Serial.println(sal);

me devuelve:   42.949.41.696
y deveria devolver 31.104.000

Como se ve lo que debería de darme esta muy lejos del limite de la variable :  4,294,967,295
Seguramente sea una tonteria la solución aunque no la encuentro :(

noter

Hola. Intuyo que te está truncando a int tu long, yaque si restas el valor obtenido del deseado obtenemos 65536 (10000H).
No estoy seguro si el truncado se produce en la operación previa al almacenado en tu variable o es serial quien lo trunca, aunque me inclino por lo primero.
Prueba a almacenar los operandos en variables long y usar éstas a ver.
Si funciona, puedes probar tu código original haciendo cast al cálculo.

Togusha

Muchas gracias noter, ha funcionado, guardando los valores en variables long:

Code: [Select]
  long meses = 12;
  long dias = 30;
  long horas = 24;
  long segundos = 3600;
  unsigned long sal = meses*dias*horas*segundos;



Go Up