Problema diviendo en PHP (si....)

Iniciado por ‭lipman, 11 Abril 2010, 14:04 PM

0 Miembros y 1 Visitante están viendo este tema.

‭lipman

Igual el problema es porque se trata de números grandes, si es así.. a ver si alguno sabe la solución.

Código (php-brief) [Seleccionar]

for($a=1;$a<=10;$a++)
echo 600851475143/$a . "<br>";


Salida:
Citar
600851475143
300425737572
200283825048
150212868786
120170295029
100141912524
85835925020.4
75106434392.9
66761275015.9
60085147514.3

Se supone que me ha dividido el número entre todos los números del 1 al 10 inclusives. Pero si nos fijamos, el segundo caso es totalmente falso:

300425737572 x 2 = 600851475144

Y así sucesivamente con los demás. Aparentemente, el multiplicado por uno y por diez son correctos. Los demás no los he comprobado todos, pero no tiene pinta de que salga ese resultado.

¿Porqué es y cómo puedo solucionarlo?

KrossPock

a mi me devuelve asi:

600851475143
300425737571.5
200283825047.67
150212868785.75
120170295028.6
100141912523.83
85835925020.429
75106434392.875
66761275015.889
60085147514.3

Quiza sea algo del php.ini que redondea los resultados...


~ Yoya ~

Código (php) [Seleccionar]
<?php
for($a=1;$a<=10;$a++){
$r 600851475143/$a;
$r1 =$r $a;
echo 
"$a ->".$r." => ".$r1."\n";
}
?>



Salida:
yoya@yoya-desktop:~/Escritorio$ php a.php
1 ->600851475143 => 600851475143
2 ->300425737572 => 600851475143
3 ->200283825048 => 600851475143
4 ->150212868786 => 600851475143
5 ->120170295029 => 600851475143
6 ->100141912524 => 600851475143
7 ->85835925020.4 => 600851475143
8 ->75106434392.9 => 600851475143
9 ->66761275015.9 => 600851475143
10 ->60085147514.3 => 600851475143
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Skeletron

Tienes problemas con los decimales restantes de la divicion

‭lipman

Vale, pues como me dijo Winder, definitivamente el problema es por el redondeo que me hace.

Ahora me falta hayar la solución xD estuve buscando en el php.ini y nada.

Un saludo