elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema diviendo en PHP (si....)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema diviendo en PHP (si....)  (Leído 2,896 veces)
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Problema diviendo en PHP (si....)
« en: 11 Abril 2010, 14:04 pm »

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

Código
  1. for($a=1;$a<=10;$a++)
  2. echo 600851475143/$a . "<br>";
  3.  

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?


En línea

KrossPock

Desconectado Desconectado

Mensajes: 208



Ver Perfil
Re: Problema diviendo en PHP (si....)
« Respuesta #1 en: 11 Abril 2010, 19:32 pm »

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...


En línea


~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema diviendo en PHP (si....)
« Respuesta #2 en: 11 Abril 2010, 20:21 pm »

Código
  1. <?php
  2. for($a=1;$a<=10;$a++){
  3. $r = 600851475143/$a;
  4. $r1 =$r * $a;
  5. echo "$a ->".$r." => ".$r1."\n";
  6. }
  7. ?>
  8.  

Salida:
Código:
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
En línea

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


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problema diviendo en PHP (si....)
« Respuesta #3 en: 11 Abril 2010, 22:55 pm »

Tienes problemas con los decimales restantes de la divicion
En línea

‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: Problema diviendo en PHP (si....)
« Respuesta #4 en: 12 Abril 2010, 15:42 pm »

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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines