1

Alguien me puede apoyar a entender, por que la suma de 2 números, en los 3 navegadores (Chrome, iExplorer y Edge) me altera el resultado?

En la imagen despliego los ejemplos que probé. Algunos otros da bien, pero esos buscados al Azar, me da valores incorrectos, que si bien son poco significativos, según yo no debería ser...

Además, si sumo un numero que inicie en cero, marca error ... Eso si que es extraño, aunque ese si sería un menor impacto ya que normalmente se usa en variables los valores.

Debe tener alguna razón! Alguien la conoce? :| introducir la descripción de la imagen aquí

  • Hola Omar, procura no poner ligas a imágenes de código o pruebas, mejor inclúyelos en tu pregunta para que sea más fácil para la gente reproducir el problema por favor – Yikarus Nov 16 '17 at 22:16
  • Hola Yikarus ... lo hice tratando de mostrar como efectivamente son los diferentes navegadores los que me arrojan el mismo valor... la opción de agregar imagenes la trae el editor del Stack y lo aproveché. Pero dando honor a tu reputación, tendré mas cuidado en eso :) gracias por el TIP ... – Omar Trinidad Chavez Mojarro Nov 17 '17 at 00:08

2 Answers2

0

Es porque tenés un 0 adelante del 4. 04.04 y el número debería ser 4.04, entonces al hacer 12.12 + 4.04 debería darte el resultado.

¿Es por algún motivo en especial que tenés ese cero?

Kleith
  • 3,773
  • 2
  • 13
  • 27
  • Eso no es lo importante... El detalle interesante es el que la suma me mueve los decimales... eso del CERO a la izquierda, como para que.... solo quice incluir ese comentario que me brinco haciendo las pruebas de los decimales.... – Omar Trinidad Chavez Mojarro Nov 17 '17 at 00:05
  • Podrías pasar la función a `toFixed()` para pasarlo a string y después a decimal. Por ejemplo `+(12.12+4.05).toFixed(12)`. – Kleith Nov 17 '17 at 20:00
0

Esto es debido a que tienes un cero al inicio del literal numérico, como dice la documentación

Sí el literal inicia con un cero seguido de otro número decimal menores que 8 , se interpreta como un número octal , es por eso que muestra el error. Pero existe el detalle que si el número o los números que siguen después del 0 están fuera del rango 0-7, se ignora el cero al inicio.

12.12 + 04.04  // error sigue 4 después del 0
12.12 + 09.04  // ignora el cero a la izquierda porque no está entre el rango 0-7

0122.3 +2    // error los números después del 0 están en el rango
0128.3 +2   // existe un número fuera del rango , se ignora el cero al inicio.
Dev. Joel
  • 23,229
  • 3
  • 25
  • 44
  • OK ... lo del CERO .. ok ... pero por que la suma, no da exacta??? 0.12+0.05 deberia ser 0.17 ... las matematicas son una ciencia exacta, no? ... alguna idea por que los navegadores, todos, tienen ese Error? – Omar Trinidad Chavez Mojarro Nov 17 '17 at 00:06
  • Quizá debería revisar esta [pregunta](https://es.stackoverflow.com/questions/197/por-qué-mis-programas-no-pueden-hacer-cálculos-aritméticos-correctamente) relacionada con su pregunta. – Dev. Joel Nov 17 '17 at 00:09