Foros del Web » Programando para Internet » PHP »

Sumatoria entre NEgativos y Positivos

Estas en el tema de Sumatoria entre NEgativos y Positivos en el foro de PHP en Foros del Web. Saludos, tengo que realizar una sumatoria de valores entre los cuales hay valores positivos y negativos, pero al hacer el FOR y empesar a sumar ...
  #1 (permalink)  
Antiguo 12/04/2005, 08:18
 
Fecha de Ingreso: septiembre-2003
Ubicación: VIña del Mar
Mensajes: 70
Antigüedad: 20 años, 7 meses
Puntos: 0
Sumatoria entre NEgativos y Positivos

Saludos,

tengo que realizar una sumatoria de valores entre los cuales hay valores positivos y negativos, pero al hacer el FOR y empesar a sumar los valores del arreglo, me dio cuenta que no me toma en cuenta los calores negativos, siendo que lo logico es que esos valores los reste.

Los valores negativos no los toma y solo suma los valores positivos.
__________________
www.cielonegro.cl
Comunidad chilena de entretencion
  #2 (permalink)  
Antiguo 12/04/2005, 10:26
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
No se que codigo usas, quizas el problema es que especificas los valores negativos como strings o nose...
Código PHP:
$neg = -1// forma correcta
$pos 6;
$suma $pos $neg// aunque sea un numero negativo hay que sumarlo (correcto)
                               // (es regla de signos en matemeticas )
$sumaMal $pos $neg;   // incorrecto porque 6 - (-1) es lo mismo que 6+1 
Aunque tmb. mira esto...
http://ar2.php.net/manual/en/function.array-sum.php
que te va a simplificar la vida..

Saludos
  #3 (permalink)  
Antiguo 12/04/2005, 11:16
 
Fecha de Ingreso: septiembre-2003
Ubicación: VIña del Mar
Mensajes: 70
Antigüedad: 20 años, 7 meses
Puntos: 0
sigo sin resolver el problema

Código PHP:
 $otro $a[$i]["Impo_mes"];  //saco el valor -1401 del arreglo
settype($otro"integer");    // convieto a iinteger 
Pero al asignarle el valor a la variable $otro esta queda en cero.
Esto solo sucede con valores negativos, pues los valores de $a positivos los convierte y suma sin problemas
__________________
www.cielonegro.cl
Comunidad chilena de entretencion
  #4 (permalink)  
Antiguo 12/04/2005, 11:26
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Recomendacion

Ponte unos googles y a buscar en tu codigo...

Te recomiendo que imprimas las variables, tal vez en la conversion la esta haciendo mal... para convertir directamente un valor tambien puedes usar:

(string)$Var --> Te asegura una cadena
(int)$valor --> Te asegura un entero

Bueno, mira, sencillo, haz un echo "[" . $MyVar . $ "]":

Antes y despues de la conversion y mira que datos te esta dando, los corchetes son para que estes seguro de espacios en blanco, etc.

Bueno, Suerte!!, busca esto y si el problema resulta la conversion busca otra forma, ahorita la verdad no recuerdo ninguna otra.

Suerte!!
  #5 (permalink)  
Antiguo 12/04/2005, 11:41
 
Fecha de Ingreso: septiembre-2003
Ubicación: VIña del Mar
Mensajes: 70
Antigüedad: 20 años, 7 meses
Puntos: 0
probe asignando de esta manera

Código PHP:
// $a[$i]["Impo_mes"] tiene valor "-1402"
$otro = (int)$a[$i]["Impo_mes"];
echo 
$otro//Devuelve cero 
Pero la variable $otro tambien queda con valor cero.

Tambien probe de esta manera.
Código PHP:
// $a[$i]["Impo_mes"] tiene valor "-1402"
$otro $a[$i]["Impo_mes"];
$otro += 0;
echo 
$otro//Devuelve cero 

Esos son los metodos que tenia en mi manual de PHP y tampoco me dieron resultado
__________________
www.cielonegro.cl
Comunidad chilena de entretencion
  #6 (permalink)  
Antiguo 12/04/2005, 12:53
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Ok

Revisa el valor inicial en el arreglo antes de sacar el valor:

echo "[" . $a[$i]["Impo_mes"] . "]":

Revisa que este bien, con el signo correcto, etc.
  #7 (permalink)  
Antiguo 12/04/2005, 12:59
 
Fecha de Ingreso: septiembre-2003
Ubicación: VIña del Mar
Mensajes: 70
Antigüedad: 20 años, 7 meses
Puntos: 0
ok... el valor lo muestra

Código PHP:
echo "[" $a[$i]["Impo_mes"] . "]"//devuelve -1402 
pero...

Código PHP:
$otro = (int)$a[$i]["Impo_mes"];
echo 
$otro//Devuelve cero

$otro $a[$i]["Impo_mes"];
$otro += 0;
echo 
$otro//Devuelve cero 
No se que pasa :S
__________________
www.cielonegro.cl
Comunidad chilena de entretencion
  #8 (permalink)  
Antiguo 12/04/2005, 13:10
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Yo tampoco

Bueno, en tu segundo metodo, es +=0, no estoy seguro, en javascriot lo que he usado para asegurar los enteros es hacer *1 ...

Entonces usa esto para probar que pasa:

$otro = $a[$i]["Impo_mes"];

echo $otro; //Di que devuelve

$otro = $a[$i]["Impo_mes"] * 1;
echo $otro; //Di que devuelve

$otro = (int)$a[$i]["Impo_mes"] * 1;
echo $otro; //Di que devuelve

//En alguno debe salir bien... que raro, no me ha pasado ese error, a lo mejor en int solo son positivos y ahi esta el error, no lo se, la verdad no se, y esepro que alguien sepa porque cualquiera de esos metodos raros del += 0, y * 1 no los recomendaria usar en todo un codigo, debe haber una manera sencilla y ya hecha por php para ese problema

Ok... tambien revisa si no hay espacios en el valor del arreglo, es decir, verifica que todo tu arreglo tenga valores validos, para ver bien los valores usa:

echo "[" . $otro . "]"; //Asi verificas que no tenga espacios, etc.

Bueno, prueba y dinos que pasa
  #9 (permalink)  
Antiguo 12/04/2005, 13:51
 
Fecha de Ingreso: septiembre-2003
Ubicación: VIña del Mar
Mensajes: 70
Antigüedad: 20 años, 7 meses
Puntos: 0
lo solucione de la seguiente manera

Código PHP:
$otro eregi_replace(" """$a[$i]["Impo_mes"]); 
settype($otro"integer"); 

Muchas gracias por vuestra ayuda
__________________
www.cielonegro.cl
Comunidad chilena de entretencion
  #10 (permalink)  
Antiguo 12/04/2005, 14:21
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Que bueno

Sbes, entonces si tenias simbolos raros en los valores y por eso pasaba el error, bueno, que suave que ya esta, revisa bien donde llenas el arreglo.

Bay
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 11:04.