Porque esto no me funciona ?
$numero = 1;
while ($numero <> 1.87)
{
$numero = $numero + 0.01;
}
echo ($numero);
| ||||
Respuesta: PHP esta loco o,O Te sugiero indicar o si es < o >. Aquí tienes info sobre los operadores.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| |||
Le puse 300 segundos y lo unico que hizo fue durar mas para tirar el error, creo que el problema es del <> cuando se utilizan numeros decimales. Intenté este codigo $numero = 1; while ($numero <> 100000) { $numero = $numero + 1; } echo ($numero); y me respondio en 4 segundos, considerando que este loop es mas largo. Alguien sabe a que se debe ? grax alguien tendria la gran gran amabilidad de ayudarme ? soy nuevo en PHP me lei un manual ayer y no he tenido problemas hasta ahora, esto me esta volviendo loco, porq estoy consciente de que mi programa esta bien, es PHP que esta haciendo algo que al parecer en mi manual no estaba y que busco por internet mas manuales y no habla sobre algo asi ! grax $numero = 1; while ($numero <> 1.87) { $numero = $numero + 0.01; } echo ($numero); Me podrias explicar porque no terminaria ? Se supone que al ir sumando 0.01, debe llegar a 1.87 en algun momento(en la vuelta numero 87) y no volveria entrar al loop, ya que 1.87 no es desigual a 1.87(condicion), imprime $numero y fin. !!!!!!! NO COMPRENDO !!!!!! algun Pro que me ayude! por favor ! Carl se que con tu codigo si funciona, pero necesito que funcione con <>, es decir, necesito comprender el porq no funciona con <>, analiza el programa con <> y dime porq no funciona ? Solo como aprendizaje, porque segun yo deberia funcionar !!! o no ? nadie me puede decir :(? Última edición por GatorV; 05/04/2010 a las 10:07 |
| ||||
Respuesta: PHP esta loco o,O es que lo que planteas es incoherente.... ¿donde le especificaste 300 segundos?? ¿de donde sacaste tal idea?? ese es tu problema, ya que eso no se especifica con un integer.... te recuerdo que no puedes controlar cuanto dura el loop.... eso simplemente varía dependiendo de la memoria disponible, etc, etc... en todo caso, si deseas pausar el proceso usa sleep() o usleep() pero sería bueno preguntar... ¿que pretendes con tu código??? PDTA: ¿quien es el loco??
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| ||||
Respuesta: PHP esta loco o,O Código PHP: Quizas quieras plantear while ($numero <= 100000) Al final del bucle imprimiría 100001 O quizas si planteas while ($numero < 100000) al final del bucle imprimiría 100000 edit: Intentalo de esta forma Código PHP: Última edición por Carlmycol; 04/04/2010 a las 12:53 |
| |||
Respuesta: PHP esta loco o,O pateketrueke observa las respuesta que me dio mauroave. Le incremente el limite a 300 segundos y aun asi no me dio respuesta. luego verificando si se debia a la gran cantidad de vueltas que debe de realizar para alcanzar la cantidad 1.87 desde 1, intente poner numeros reales de 1 a 100000, que logicamente son muchas mas vueltas y me respondio al instante. no se de que me serviria pausarlo, podrias introducirlo en mi primer trozo de codigo de manera que si de el resultado de 1.87 ? te lo agradeceria , grax. |
| |||
Respuesta: PHP esta loco o,O
Código PHP:
Ver original no abro otro post por que es casi lo mismo
Código PHP:
Ver original por que hace todo bien hasta el 54 ?
Código txt:
Ver original :S? Última edición por Hidek1; 05/04/2010 a las 08:32 |
| ||||
Respuesta: PHP esta loco o,O No sé por qué pasa eso, pero para resolver el problema usa round.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| |||
Respuesta: PHP esta loco o,O Grax a todos ! Es cierto lo que dijo abimaelrc, la solucion es round, aunque no sabemos porq lo haga, almenos existe una solucion a ese comportamiento y eso es lo que cuenta. Mil grax a todos son unos PRO! |
| |||
Respuesta: PHP esta loco o,O Cita: Hola,
Iniciado por Hidek1 (...)
Código PHP:
Ver original por que hace todo bien hasta el 54 ?
Código txt:
Ver original :S? No me consta que sea la razón de este problema, pero me hizo recordar lo siguiente: Matemáticamente, entre cada número real existe una cantidad infinita de números reales. Pero en una máquina existe una cantidad finita de ellos. Es decir, entre cada fracción de número hay un "step", ese step es tan pequeño que da la sensación de continuidad, pero en la práctica no lo es. ese 000000001 que te aparece puede ser el error acumulado a lo largo de las 540 sumas anteriores. En la página 9 de - https://www.u-cursos.cl/ingenieria/2007/2/MA33A/3/material_docente/objeto/136815 - hay una explicación algo más clara. Saludos! Última edición por keber; 06/04/2010 a las 07:55 Razón: Link |
| |||
Respuesta: PHP esta loco o,O Cita:
Iniciado por keber Hola, No me consta que sea la razón de este problema, pero me hizo recordar lo siguiente: Matemáticamente, entre cada número real existe una cantidad infinita de números reales. Pero en una máquina existe una cantidad finita de ellos. Es decir, entre cada fracción de número hay un "step", ese step es tan pequeño que da la sensación de continuidad, pero en la práctica no lo es. ese 000000001 que te aparece puede ser el error acumulado a lo largo de las 540 sumas anteriores. En la página 9 de este documento hay una explicación algo más clara, [URL="https://www.u-cursos.cl/ingenieria/2007/2/MA33A/3/material_docente/objeto/136815"]https://www.u-cursos.cl/ingenieria/2007/2/MA33A/3/material_docente/objeto/136815[/URL] Saludos! gracias por la informacion!... de seguro tiene algo que ver con 2 + 2 = 5 |
| |||
Respuesta: PHP esta loco o,O Cita: numero lo inicalizas como entero, prueba con $numero = 1.0 para inicializarlo como float.¿que el distinto no es " != " ? while($numero != 1.87) saludos. |
| ||||
Respuesta: PHP esta loco o,O de hecho ambos <> y != significan lo mismo... ;) no estaría nada mal leer el manual: http://php.net/manual/en/language.operators.php
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: PHP esta loco o,O aunque pongas 1.0 o 1.00 el error pasa. Incluso ese error puede llevar otras mas complicaciones, como el que PHP no vea diferencia entre numeros iguales, condiciones tales como 14 <> 14 puede llevar a PHP a decir verdadero cuando logicamente eso es falso. Por eso vuelvo y digo gracias a dios existe round, les sugiero que cada vez que apliquen procesos con numero decimales a una variable le apliquen un round, almenos tengo la experiencia dentro de loops, pero ignoro la cantidad de incosistencias que pueda llevar este inconveniente. |
| |||
Respuesta: PHP esta loco o,O Cita: seria un buen metodo si fuera un loop de numeros enteros.. pero el necesita flotantes 0.x
Iniciado por Bigcrime aunque pongas 1.0 o 1.00 el error pasa. Incluso ese error puede llevar otras mas complicaciones, como el que PHP no vea diferencia entre numeros iguales, condiciones tales como 14 <> 14 puede llevar a PHP a decir verdadero cuando logicamente eso es falso. Por eso vuelvo y digo gracias a dios existe round, les sugiero que cada vez que apliquen procesos con numero decimales a una variable le apliquen un round, almenos tengo la experiencia dentro de loops, pero ignoro la cantidad de incosistencias que pueda llevar este inconveniente. saludos! |
Etiquetas: |