Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Suma de números positivos y negativos

Estas en el tema de Suma de números positivos y negativos en el foro de PHP en Foros del Web. Hola: Hago el calculo de Mínimos Cuadrados Ordinarios (Econometría) pero en la suma de este array: Array ( [0] => -6.4 [1] => -4.4 [2] ...
  #1 (permalink)  
Antiguo 29/09/2014, 16:11
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Suma de números positivos y negativos

Hola:

Hago el calculo de Mínimos Cuadrados Ordinarios (Econometría) pero en la suma de este array:

Array ( [0] => -6.4 [1] => -4.4 [2] => -3.4 [3] => -2.4 [4] => -1.4 [5] => 0.6 [6] => 3.6 [7] => 4.6 [8] => 5.6 [9] => 3.6 )

el resultado es:

1.4210854715202E-14

Cuando debería ser CERO "0".

Sea usando array_sum() o sumando manualmente el resultado continua con valores grades, alguien podría decirme por que?.

Gracias
  #2 (permalink)  
Antiguo 29/09/2014, 17:04
 
Fecha de Ingreso: septiembre-2014
Mensajes: 1
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Suma de números positivos y negativos

Hola.

Y si sumas los negativos y despues sumas los positivos?
Me refiero:
(-1-2-3-4)+(1+2+3+4)


Un saludo
  #3 (permalink)  
Antiguo 30/09/2014, 10:14
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Suma de números positivos y negativos

Me parece un poco raro que estos números se desborden y el resultado final lo trate como si fuera un flotante (mi teoria es que de pronto los esta manejando como cadenas y no como números). En el manual de php puedes ver algunas opciones para manipular los números y te sumen como entero o flotante. Pruebalo y nos comentas como te fue.


http://php.net/manual/es/language.types.integer.php

http://php.net/manual/es/language.types.float.php
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 30/09/2014 a las 10:22
  #4 (permalink)  
Antiguo 02/10/2014, 10:21
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Suma de números positivos y negativos

Las opciones de suma don dinamicas, no puedo realizar la suma manualmente.

Vere la opción de cuasatar, y comento
  #5 (permalink)  
Antiguo 02/10/2014, 10:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Suma de números positivos y negativos

Curiosamente en ningún caso me resulta 0, observa:

Código PHP:
Ver original
  1. $nums = array('-6.4',  '-4.4',  '-3.4',  '-2.4',  '-1.4',  '0.6',  '3.6',  '4.6',  '5.6',  '3.6');
  2.  
  3. var_dump(array_sum($nums)); // double(4.4408920985006E-16)
  4.  
  5. $ints = array_map('intval', $nums);
  6.  
  7. var_dump(array_sum($ints)); // int(-1)
  8.  
  9. $floats = array_map('floatval', $nums);
  10.  
  11. var_dump(array_sum($floats)); // double(4.4408920985006E-16)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 02/10/2014, 11:54
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Suma de números positivos y negativos

Con el fin de no cometer errores haz la prueba con una calculadora, el resultado es "CERO", yo hice esto:

(float)$valoresY[$i]-(array_sum($valoresY)/count($valoresY));

pero igual no funciona, me saca el siguiente resultado

1.4210854715202E-14

Pues bien yo saco el resultado de cero pero usando:

round(pow(($valoresX[$i]-(array_sum($valoresX)/count($valoresX))),2),4)

donde por obvias razones me arroja un "-0" el signo menos anteponiendose al cero.

alguna otra opinión?
  #7 (permalink)  
Antiguo 02/10/2014, 12:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Suma de números positivos y negativos

A mi entener es un problema que excede al lenguaje usado.
El valor que intentas obtener, PHP lo está manejando como números de punto flotante (float), y no decimales estructamente hablando. Y en los puntos flotantes no existe el cero absoluto en una operación, ya que se trata de números por aproximación.
En realidad, por caso, el resultado que te da sería 0,00000000000014210854715202, lo que matemáticamente sería cero al redondearlo.

El tema de punto flotante es algo que causa muchas complicaciones.

Ver el tema en el manual de referencia:
http://php.net/manual/es/language.types.float.php
Leer en especial la advertencia...

Otro: http://puntoflotante.org/basic/

http://puntoflotante.org/languages/php/
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/10/2014 a las 12:13
  #8 (permalink)  
Antiguo 02/10/2014, 12:21
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Suma de números positivos y negativos

mmm, nunca lo habia analizado desde ese punto.

Gracias gnzsoloyo, claro y detallada la respuesta.

Etiquetas: suma
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:45.