PHP - Problema de calculo

 
Vista:

Problema de calculo

Publicado por Xavier (3 intervenciones) el 18/06/2008 10:14:03
Yo tengo creado hasta aquí y me funciona bien parte del calculo, pero hay cantidades que me salen mal los decimales y el calculo en si.
Hasta 500 me calcula bien (sale siempre 25)
Luego dependiendo que cantidades pongo me sale bien o me sale asi:
Total: 119.58333333333,00 euros

Yo tengo hecho esto:

$asientos = $_POST ["cantidad"];

if ($asientos <= 500)
$resultado2 = $asientos = 25;
else {
$asientos -= 500;
$resultado2 = + 25;

if ($asientos <= 2000)
$resultado2 += $asientos * 0.48/12;
else {
$asientos -= 2000;
$resultado2 += 2000 * 0.48/12;
$resultado2 += $asientos * 0.35/12;
}
}

Donde esta el error?
El calculo debe hacer lo siguiente:
Hasta 500 vale 25
De 501 a 2000 vale 25 *0.48 (a partir de 500 hasta la cantidad puesta)
Mas de 2001 vale 25 + segundo calculo * 0.35 (a partir de 2001)

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema de calculo

Publicado por Rein (13 intervenciones) el 18/06/2008 16:44:51
<?
$asientos = 2010;
$resultado2 = 0;

if ($asientos <= 500){
$resultado = $asientos = 25;
echo $resultado;
}

if (($asientos > 500) && ($asientos < 2000) ){
$asientos = $asientos - 500;
$resultado2 = (($asientos + 25)* 0.48);
echo $resultado2;
}

if ($asientos > 2000){
$asientos = $asientos - 2000;
$resultado2 = (($asientos + 25)* 0.48);
$resultado2 = (($resultado2 + 25) * 0.35);
echo $resultado2;
}
?>
<?
//y si quieres que divida por 12 los resultados y no que multiplique por 0.48 dividido por 12 es

$asientos = 2010;
$resultado2 = 0;

if ($asientos <= 500){
$resultado = $asientos = 25;
echo $resultado;
//si es menor a 500 va a ser 25 por la asignacion a asientos
}
//si en mayor que 500 va a restarle 500 a asientos y va a sumarle 25 al resto.
if (($asientos > 500) && ($asientos < 2000) ){
$asientos = $asientos - 500;
$resultado2 = ((($asientos + 25)* 0.48)/12);
echo $resultado2;
}
if ($asientos > 2000){
$asientos = $asientos - 2000;
$resultado2 = ((($asientos + 25)* 0.48)/12);
$resultado2 = (($resultado2 + 25) * 0.35);
echo $resultado2;
}

?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema de calculo

Publicado por Rein (13 intervenciones) el 18/06/2008 18:24:11
aps tienes que cambiar la variable asientos para recivirla por post como la tenias antes.

$asiento=$_POST[asientos];

eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema de calculo

Publicado por Xavi (3 intervenciones) el 18/06/2008 18:56:19
Hola Rein,
Actualmente el codigo que tengo es este:

<?php
$nomina = $_POST ["nomina"];
if ($nomina <= 10)
$resultado = $nomina * 13;
else {
$nomina -= 10;
$resultado = 10 * 13;
if ($nomina <= 15)
$resultado += $nomina * 12;
else {
$nomina -= 15;
$resultado += 15 * 12;
if ($nomina <= 25)
$resultado += $nomina * 11;
else {
$nomina -= 25;
$resultado += 25 * 11;
$resultado += $nomina * 10;
}
}
}

//Hasta aquí me calcula bien la parte de las nónimas

// Apartir de aquí es donde el calculo no sé como hacerlo

$compra = $_POST ["compra"];
$venta = $_POST ["venta"];
$asientos = $compra + $venta;
$asientos_tmp = $asientos;
$precio_total=0;

if ($asientos_tmp <= 500)

$precio_total = 25.00;

if (($asientos_tmp > 500) && ($asientos_tmp <= 2000))
{
// este es el precio hasta 500
$precio_total = 25.00;
//sumamos el resto
$resto = $asientos -500;
$precio_parcial = ($resto*0.48)/12;
$precio_total += $precio_parcial;
}

if ($asientos_tmp <2000)
{
// este es el precio hasta 500
$precio_total = 25.00;
// hasta 2000-500 = 1500
$precio_parcial = (1500*0.48)/12;
$precio_total += $precio_parcial;
//el resto es más de 2000
$resto=$asientos -2000;
$precio_parcial = ($resto*0.35)/12;
$precio_total += $precio_parcial;
}
$total= $resultado + $asientos;
echo "El presupuesto es de: <b> $total</b> euros/mes";

?>

Y hasta aquí me calcula bien la parte de NOMINAS (por lo que nos podemos olvidar de este calculo.
El problema está en el calculo de asientos (que es la suma de las dos casillas de compras/ventas).
Tengo un pdf para que puedas ver el calculo que debería realizar: http://www.economis.es/pdf/calculo.pdf
y la dirección url de prueba es:
http://www.economis.es/calculo.php

No sé donde está el fallo y me está volviendo loco (aparte soy novato en esto de php)
Gracias por tu ayuda

Xavi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema de calculo

Publicado por Xavi (3 intervenciones) el 18/06/2008 19:15:07
Rein he hecho lo que me dices:
Está publicado en esta dirección:
http://www.economis.es/calculo_pruebas.php

El calculo de las nominas olvidate (lo hace bien y no es el problema)

El calculo de los asientos me lo hace biena hasta 500 (da siempre 25) y es lo correcto.
El problema es con las cantidades superiores (no lo calcula bien)

Mirate el PDF http://www.economis.es/pdf/calculo.pdf

o te resumo los calculos que debe realizar para cantidades superiores a 500

primera condicion:
si la cantidad esta entre 501 y 2000
se multiplica cada asiento *0,48 y se divide entre 12
pero ten en cuenta que arrastra la suma de 25 (cantidad hasta 500)

segunda condicion
a partir de 2001
*0,35 y se divide entre 12 cada asiento de más
pero arrastra 25 (hasta 500)
arrastra el importe de 1500 *0,48/12 (prmera condicion)

Ya me dirás que está mal

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema de calculo

Publicado por Rein (13 intervenciones) el 18/06/2008 20:27:45
esto es, o por lo menos me da lo mismo que en http://www.economis.es/calculo.php
tenias unas lineas de mas

<?
$nomina = ["nomina"];
if ($nomina <= 10)
$resultado = $nomina * 13;
else {
$nomina -= 10;
$resultado = 10 * 13;
if ($nomina <= 15)
$resultado += $nomina * 12;
else {
$nomina -= 15;
$resultado += 15 * 12;
if ($nomina <= 25)
$resultado += $nomina * 11;
else {
$nomina -= 25;
$resultado += 25 * 11;
$resultadox += $nomina * 10;
echo $resultadox;
}
}
}

$compra = ["compra"];
$venta = ["venta"];
$asientos = $compra + $venta;
$asientos_tmp = $asientos;
$precio_total=0;

if ($asientos_tmp <= 500)

$precio_total = 25.00;

if (($asientos_tmp > 500) && ($asientos_tmp <= 2000))
{
// este es el precio hasta 500
$precio_total = 25.00;
//sumamos el resto
$resto = $asientos -500;

$precio_parcial = (($resto*0.48)/12);
$precio_total += $precio_parcial;
$precio_total;
}

if ($asientos_tmp > 2000)
{
// este es el precio hasta 500
$precio_total = 25.00;
//el resto es más de 2000
$resto=$asientos -2000;
$precio_parcial = ($resto*0.35)/12;
$precio_total += $precio_parcial;
}
$total= $resultado + $asientos;
echo "El presupuesto es de: <b> $total</b> euros/mes";

?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar