PHP - Fallo al sumar tres variables

   
Vista:

Fallo al sumar tres variables

Publicado por Toneti (6 intervenciones) el 25/04/2008 01:51:50
A ver si alguien puede decirme el por que el siguiente pedazo de codigo php falla en las matematica, por mucho que le doy vuelta no consigo entenderlo.

<?
$PrTo = 1679.09;
$CoCo = $PrTo * 0.0470;
$De = $PrTo * 0.0155;
$FoPr = $PrTo * 0.0010;

$ToAp = $FoPr + $CoCo + $De;

echo "CoCo = ".number_format($CoCo,2)."<br>";
echo "De = ".number_format($De,2)."<br>";
echo "FoPr = ".number_format($FoPr,2)."<br>";

echo "ToAp ".number_format($ToAp,2)."<br>";
?>

por que el resultado que guardo en la variable $ToAp no es correcto, me tendria que dar 106.63 y me da 106.62 ?

Un saludo.
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:Fallo al sumar tres variables

Publicado por Diego Romero (1450 intervenciones) el 25/04/2008 10:29:09
Porque la función number_format utiliza redondeo en la parte fraccionaria del número.

Tú estás sumando según los números que te muestra luego de pasar por number_format pero en la sumatoria se utilizan los números sin redondear y de allí la diferencia que estás viendo.

Variable | Sin Redondeo | Con redondeo
$CoCo | 78.91723 | 78.92
$De | 26.025895 | 26.03
$FoPr | 1.67909 | 1.68
Total: 106.622215 | 106.63

por lo tanto $ToAp vale 106.622215 que redondeado es 106.62 y está bien y es lo que te muestra al final, pero si sumas los valores redondeados de las tres variables el resultado es el que tú dices que debería ser, 106.63.

En definitiva, es una cuestión de interpretación.
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:Fallo al sumar tres variables

Publicado por Toneti (6 intervenciones) el 25/04/2008 23:59:19
Diego, gracias estoy comenzando con el PHP y estos detalles los desconozco, tu explicacion me ha sido de gran ayuda, ahora ya se como debo hacer los calculos para obtener los resultados deseados.

Un saludo compañero.
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