Foros del Web » Programando para Internet » PHP »

Problema para realizar una operacion resta.

Estas en el tema de Problema para realizar una operacion resta. en el foro de PHP en Foros del Web. Tengo una variable $percepciontotal que es un valor numerico aleatorio. Tengo otra variable $smi que es un valor numerico constante siempre es menor o igual ...
  #1 (permalink)  
Antiguo 25/03/2013, 03:38
b44
 
Fecha de Ingreso: diciembre-2005
Mensajes: 142
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema para realizar una operacion resta.

Tengo una variable $percepciontotal que es un valor numerico aleatorio.
Tengo otra variable $smi que es un valor numerico constante siempre es menor o igual a $percepciontotal.
El problema consiste en que tengo que restar $percepciontotal-$smi como maximo hasta 6 veces siempre que el resultado final no sea menor a 0.
Para esto he resuelto este conjunto de variables:
A $percepciontotal le resto $smi el resultado lo guardo en la variable $diferencia1 y asi sucesivamente hasta seis veces.
Posteriormente las imprimo en pantalla.

$diferencia1 = $percepciontotal-$smi;
$diferencia2 = $diferencia1-$smi;
$diferencia3 = $diferencia2-$smi;
$diferencia4 = $diferencia3-$smi;
$diferencia5 = $diferencia4-$smi;
$diferencia6 = $diferencia5-$smi;
//escribo los resultados
echo $diferencia1;
echo '. <br>';
echo $diferencia2;
echo '. <br>';
echo $diferencia3;
echo '. <br>';
echo $diferencia4;
echo '. <br>';
echo $diferencia5;
echo '. <br>';
echo $diferencia6;
//salto de linea tres espacios
echo '. <br><br><br>';
//Le resto la diferencia a la percepcion total que me vuelve a dar la variable $smi siempre que el resultado sea positivo, porque si el resultado es negativo no quiero seguir restando este resultado y lo guardo en la variable percepciontotal1....que luego voy a sacarle un tanto por ciento.
$percepciontotal1 = $percepciontotal-$diferencia1;
$percepciontotal2 = $diferencia1-$diferencia2;
$percepciontotal3 = $diferencia2-$diferencia3;
$percepciontotal4 = $diferencia3-$diferencia4;
$percepciontotal5 = $diferencia4-$diferencia5;
$percepciontotal6 = $diferencia5;
//escribo los resultados
echo $percepciontotal1;
echo '. <br>';
echo $percepciontotal2;
echo '. <br>';
echo $percepciontotal3;
echo '. <br>';
echo $percepciontotal4;
echo '. <br>';
echo $percepciontotal5;
echo '. <br>';
echo $percepciontotal6;

//salto de linea tres espacios
echo '. <br><br><br>';
//retencion aplicable por tramos tanto por ciento a la variable obtenida anteriormente. La variable retencion 1..... va a ser siempre $smi excepto cuando su resta sea menor a cero que tiene que ser el resultado de la resta en positivo.(en el ejemplo se ve mejor)
$retencion1 = $percepciontotal1*0;
$retencion2 = $percepciontotal2*0.3;
$retencion3 = $percepciontotal3*0.5;
$retencion4 = $percepciontotal4*0.6;
$retencion5 = $percepciontotal5*0.75;
$retencion6 = $percepciontotal6*0.9;
echo $retencion1;
echo '. <br>';
echo $retencion2;
echo '. <br>';
echo $retencion3;
echo '. <br>';
echo $retencion4;
echo '. <br>';
echo $retencion5;
echo '. <br>';
echo $retencion6;

El caso es que funciona correctamente siempre que sean números grandes 6000 8000.....
Pongo un ejemplo:
$percepciontotal = 6000
$smi= 500

6050 500 5550
5550 500 5050
5050 500 4550
4550 500 4050
4050 500 3550
3550 500 3050

Pongo un ejemplo:
$percepciontotal = 700
$smi= 500
el problema es que con números pequeños no me funciona
700 500 200
200 500 -300 este resutado deberia ser 200
-300 500 -700 este resultado deberia ser 0
-700 500 -1200 este resultado deberia ser 0

Mi pregunta es esta, ¿cómo puedo hacer esto para que en el resultado 200-500 me reste solo los 200 y a partir de ahi el resto sea cero?
Creo que debería ser algo así restar y guardar en una variable mientras el número sea positivo pero yo no se como se puede hacer esto.
  #2 (permalink)  
Antiguo 25/03/2013, 06:45
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Problema para realizar una operacion resta.

con un

if($a>$b) $a-$b

else $b-$a

aunque la verdad no entiendo bien tu planteamiento
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 28/03/2013, 08:10
Avatar de JorM  
Fecha de Ingreso: diciembre-2012
Ubicación: Argentina
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema para realizar una operacion resta.

si lo que no queres es que la resta de diferencias negativas causadas por restar un Minuendo

mas chico que el Sustraendo podrías usar la función VALOR ABSOLUTO

Código PHP:
Ver original
  1. echo abs(5-2) //3
  2.  
  3. echo abs(2-5) //3

Etiquetas: operacion, resultados, variables
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 18:33.