🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
9 messages
9 total messages Started by TheSpawn Wed, 08 Aug 2007 08:34
PHP y MySQL
#808
Author: TheSpawn
Date: Wed, 08 Aug 2007 08:34
18 lines
1671 bytes
Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una 
aplicacion
en donde tengo un rango con numero decimales mostrados en el combo box. El 
problema
es que el rango de decimales va de 0 a 2.5 dentro de un while para el 
llenado de las
options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0 a un 
numero superior
a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me muestra 
el 4.5.

Alguien sabe a que se debe este problema?... el campo lo tengo asignado como 
decimal(3,1)

Saludos


TheSpawn
Re: PHP y MySQL
#809
Author: Jos� Miguel Santib��ez
Date: Wed, 08 Aug 2007 15:45
26 lines
2229 bytes
En el cap�tulo anterior (news:f9bh67$h5f$1@news.nivel5.cl), "TheSpawn"
<al_simmon_spawn(sinesto)@hotmail.com> dijo: 

> Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una 
> aplicacion
> en donde tengo un rango con numero decimales mostrados en el combo
> box. El problema
> es que el rango de decimales va de 0 a 2.5 dentro de un while para el 
> llenado de las
> options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0
> a un numero superior
> a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me
> muestra el 4.5.
> 
> Alguien sabe a que se debe este problema?... el campo lo tengo
> asignado como decimal(3,1)
> 
> 
> 

puedes enviar el c�digo???

-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Re: PHP y MySQL
#810
Author: TheSpawn
Date: Wed, 08 Aug 2007 16:40
54 lines
2667 bytes
<?php
//Estas variables las completo desde la DB.
$maximo = 2.5;
$intervalo = 0,1;
$cont = 0;

while($cont <= $maximo)
{
 <option value="$cont">$cont</option>
$cont = ($cont + $intervalo)
}
?>


El mismo codigo pero cambiando el valor $maximo a 4.5 o superior me muestra 
el valor 4.5, pero para otro valor me muestra hasta ($maximo - $intervalo), 
como en el codigo, me mostraria hasta 2.4.


Saludos.

TheSpawn




"Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl> wrote in message 
news:Xns99867CBF8DA06jmsnews@201.238.250.229...
> En el cap�tulo anterior (news:f9bh67$h5f$1@news.nivel5.cl), "TheSpawn"
> <al_simmon_spawn(sinesto)@hotmail.com> dijo:
>
>> Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una
>> aplicacion
>> en donde tengo un rango con numero decimales mostrados en el combo
>> box. El problema
>> es que el rango de decimales va de 0 a 2.5 dentro de un while para el
>> llenado de las
>> options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0
>> a un numero superior
>> a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me
>> muestra el 4.5.
>>
>> Alguien sabe a que se debe este problema?... el campo lo tengo
>> asignado como decimal(3,1)
>>
>>
>>
>
> puedes enviar el c�digo???
>
> -- 
> Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
> ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
> lugar y el lugar exacto para cada post  |        <http://caos.cl/jms> 
Re: PHP y MySQL
#812
Author: Jos� Miguel Santib��ez
Date: Wed, 08 Aug 2007 16:52
40 lines
2548 bytes
En el cap�tulo anterior (news:f9cdka$lds$1@news.nivel5.cl), "TheSpawn"
<al_simmon_spawn(sinesto)@hotmail.com> dijo: 

> <?php
> //Estas variables las completo desde la DB.
> $maximo = 2.5;
> $intervalo = 0,1;
> $cont = 0;
> 
> while($cont <= $maximo)
> {
>  <option value="$cont">$cont</option>
> $cont = ($cont + $intervalo)
> }
> ?>
> 
> 
> El mismo codigo pero cambiando el valor $maximo a 4.5 o superior me
> muestra el valor 4.5, pero para otro valor me muestra hasta ($maximo -
> $intervalo), como en el codigo, me mostraria hasta 2.4.
> 

plop! si no lo veo...

Asumo que tiene que ver con el problema de mantener y manejar n�meros 
decimales... (de hecho, sacando los decimales (todo funciona bien).

Hay una vieja m�xima de programaci�n que dice que es inconveniente usar 
comparaciones de igualdad entre n�meros de punto flotante, y me parece 
que este es uno de esos casos donde queda en evidencia...

Para el caso, es 100% seguro usar:
while($cont < $maximo + $intervalo)

salute!

-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Re: PHP y MySQL
#811
Author: +mArkO+
Date: Wed, 08 Aug 2007 17:19
77 lines
3267 bytes
la unica manera que encontre fue formateando los numeros

<?php
//Estas variables las completo desde la DB.
$maximo=number_format(2.5,1, '.', '');;
$intervalo=number_format(0.1,1, '.', '');;
$cont=number_format(0, 1, '.', '');;

while($cont<=$maximo)
{
echo ("<option value=\"$cont\">$cont</option><br>\n");
$cont=number_format($intervalo+$cont, 1, '.', '');
}
?>

ojala te sirva



"TheSpawn" <al_simmon_spawn(sinesto)@hotmail.com> escribi� en el mensaje 
news:f9cdka$lds$1@news.nivel5.cl...
> <?php
> //Estas variables las completo desde la DB.
> $maximo = 2.5;
> $intervalo = 0,1;
> $cont = 0;
>
> while($cont <= $maximo)
> {
> <option value="$cont">$cont</option>
> $cont = ($cont + $intervalo)
> }
> ?>
>
>
> El mismo codigo pero cambiando el valor $maximo a 4.5 o superior me 
> muestra el valor 4.5, pero para otro valor me muestra hasta ($maximo - 
> $intervalo), como en el codigo, me mostraria hasta 2.4.
>
>
> Saludos.
>
> TheSpawn
>
>
>
>
> "Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl> wrote in message 
> news:Xns99867CBF8DA06jmsnews@201.238.250.229...
>> En el cap�tulo anterior (news:f9bh67$h5f$1@news.nivel5.cl), "TheSpawn"
>> <al_simmon_spawn(sinesto)@hotmail.com> dijo:
>>
>>> Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una
>>> aplicacion
>>> en donde tengo un rango con numero decimales mostrados en el combo
>>> box. El problema
>>> es que el rango de decimales va de 0 a 2.5 dentro de un while para el
>>> llenado de las
>>> options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0
>>> a un numero superior
>>> a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me
>>> muestra el 4.5.
>>>
>>> Alguien sabe a que se debe este problema?... el campo lo tengo
>>> asignado como decimal(3,1)
>>>
>>>
>>>
>>
>> puedes enviar el c�digo???
>>
>> -- 
>> Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
>> ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
>> lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
>
> 
Re: PHP y MySQL
#813
Author: TheSpawn
Date: Thu, 09 Aug 2007 04:49
93 lines
3604 bytes
Al parecer ese codigo funciona.

Muchas gracias por sus aportes :)


Saludos

TheSpawn




"+mArkO+" <kitim@porta.cl> wrote in message 
news:f9cfti$lqa$1@news.nivel5.cl...
> la unica manera que encontre fue formateando los numeros
>
> <?php
> //Estas variables las completo desde la DB.
> $maximo=number_format(2.5,1, '.', '');;
> $intervalo=number_format(0.1,1, '.', '');;
> $cont=number_format(0, 1, '.', '');;
>
> while($cont<=$maximo)
> {
> echo ("<option value=\"$cont\">$cont</option><br>\n");
> $cont=number_format($intervalo+$cont, 1, '.', '');
> }
> ?>
>
> ojala te sirva
>
>
>
> "TheSpawn" <al_simmon_spawn(sinesto)@hotmail.com> escribi� en el mensaje 
> news:f9cdka$lds$1@news.nivel5.cl...
>> <?php
>> //Estas variables las completo desde la DB.
>> $maximo = 2.5;
>> $intervalo = 0,1;
>> $cont = 0;
>>
>> while($cont <= $maximo)
>> {
>> <option value="$cont">$cont</option>
>> $cont = ($cont + $intervalo)
>> }
>> ?>
>>
>>
>> El mismo codigo pero cambiando el valor $maximo a 4.5 o superior me 
>> muestra el valor 4.5, pero para otro valor me muestra hasta ($maximo - 
>> $intervalo), como en el codigo, me mostraria hasta 2.4.
>>
>>
>> Saludos.
>>
>> TheSpawn
>>
>>
>>
>>
>> "Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl> wrote in message 
>> news:Xns99867CBF8DA06jmsnews@201.238.250.229...
>>> En el cap�tulo anterior (news:f9bh67$h5f$1@news.nivel5.cl), "TheSpawn"
>>> <al_simmon_spawn(sinesto)@hotmail.com> dijo:
>>>
>>>> Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una
>>>> aplicacion
>>>> en donde tengo un rango con numero decimales mostrados en el combo
>>>> box. El problema
>>>> es que el rango de decimales va de 0 a 2.5 dentro de un while para el
>>>> llenado de las
>>>> options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0
>>>> a un numero superior
>>>> a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me
>>>> muestra el 4.5.
>>>>
>>>> Alguien sabe a que se debe este problema?... el campo lo tengo
>>>> asignado como decimal(3,1)
>>>>
>>>>
>>>>
>>>
>>> puedes enviar el c�digo???
>>>
>>> -- 
>>> Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
>>> ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
>>> lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
>>
>>
>
> 
Re: PHP y MySQL
#814
Author: Eduardo Romero
Date: Thu, 09 Aug 2007 22:12
65 lines
3090 bytes
El ciclo fijate q sumas un decimal y lo tienes valorizado con una coma.

La prueba esta q definas el intervalo con un decimal mas peque??o y veras
q llegara a 2.499

Saludos
Edo.

In chile.comp.www TheSpawn <al_simmon_spawn(sinesto)@hotmail.com> wrote:
> <?php
> //Estas variables las completo desde la DB.
> $maximo = 2.5;
> $intervalo = 0,1;
> $cont = 0;
> 
> while($cont <= $maximo)
> {
> <option value="$cont">$cont</option>
> $cont = ($cont + $intervalo)
> }
> ?>
> 
> 
> El mismo codigo pero cambiando el valor $maximo a 4.5 o superior me muestra 
> el valor 4.5, pero para otro valor me muestra hasta ($maximo - $intervalo), 
> como en el codigo, me mostraria hasta 2.4.
> 
> 
> Saludos.
> 
> TheSpawn
> 
> 
> 
> 
> "Jos� Miguel Santib�??ez" <jms.nospam@nivel5.cl> wrote in message 
> news:Xns99867CBF8DA06jmsnews@201.238.250.229...
>> En el cap�tulo anterior (news:f9bh67$h5f$1@news.nivel5.cl), "TheSpawn"
>> <al_simmon_spawn(sinesto)@hotmail.com> dijo:
>>
>>> Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una
>>> aplicacion
>>> en donde tengo un rango con numero decimales mostrados en el combo
>>> box. El problema
>>> es que el rango de decimales va de 0 a 2.5 dentro de un while para el
>>> llenado de las
>>> options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0
>>> a un numero superior
>>> a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me
>>> muestra el 4.5.
>>>
>>> Alguien sabe a que se debe este problema?... el campo lo tengo
>>> asignado como decimal(3,1)
>>>
>>>
>>>
>>
>> puedes enviar el c�digo???
>>
>> -- 
>> Apoye a la campa??a de alfabetizaci�n y  |       Jose M. Santiba??ez A.
>> ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
>> lugar y el lugar exacto para cada post  |        <http://caos.cl/jms> 
> 
> 
Re: PHP y MySQL
#815
Author: Eduardo Romero
Date: Fri, 10 Aug 2007 16:28
76 lines
3546 bytes
Le di mas vueltas al tema y al parecer es un error de punto flotante
y como lo interpreta php en forma interna. La prueba
esta que defines el maximo con otros valores similares y a veces resulta
y otros no.

Al invertir el while, tb sucede el mismo error.

Saludos
Edo.

In chile.comp.programacion Eduardo Romero <edo@edo.cl> wrote:
> El ciclo fijate q sumas un decimal y lo tienes valorizado con una coma.
> 
> La prueba esta q definas el intervalo con un decimal mas peque??o y veras
> q llegara a 2.499
> 
> Saludos
> Edo.
> 
> In chile.comp.www TheSpawn <al_simmon_spawn(sinesto)@hotmail.com> wrote:
>> <?php
>> //Estas variables las completo desde la DB.
>> $maximo = 2.5;
>> $intervalo = 0,1;
>> $cont = 0;
>> 
>> while($cont <= $maximo)
>> {
>> <option value="$cont">$cont</option>
>> $cont = ($cont + $intervalo)
>> }
>> ?>
>> 
>> 
>> El mismo codigo pero cambiando el valor $maximo a 4.5 o superior me muestra 
>> el valor 4.5, pero para otro valor me muestra hasta ($maximo - $intervalo), 
>> como en el codigo, me mostraria hasta 2.4.
>> 
>> 
>> Saludos.
>> 
>> TheSpawn
>> 
>> 
>> 
>> 
>> "Jos� Miguel Santib�??ez" <jms.nospam@nivel5.cl> wrote in message 
>> news:Xns99867CBF8DA06jmsnews@201.238.250.229...
>>> En el cap�tulo anterior (news:f9bh67$h5f$1@news.nivel5.cl), "TheSpawn"
>>> <al_simmon_spawn(sinesto)@hotmail.com> dijo:
>>>
>>>> Estimados, estoy trabajando con PHP y MySQL para el desarrollo de una
>>>> aplicacion
>>>> en donde tengo un rango con numero decimales mostrados en el combo
>>>> box. El problema
>>>> es que el rango de decimales va de 0 a 2.5 dentro de un while para el
>>>> llenado de las
>>>> options, pero solo me muestra de 0 a 2.4, pero si cambio el rango de 0
>>>> a un numero superior
>>>> a 4 me muestra el ultimo sin problemas, por ejemplo de 0 a 4.5, me
>>>> muestra el 4.5.
>>>>
>>>> Alguien sabe a que se debe este problema?... el campo lo tengo
>>>> asignado como decimal(3,1)
>>>>
>>>>
>>>>
>>>
>>> puedes enviar el c�digo???
>>>
>>> -- 
>>> Apoye a la campa??a de alfabetizaci�n y  |       Jose M. Santiba??ez A.
>>> ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
>>> lugar y el lugar exacto para cada post  |        <http://caos.cl/jms> 
>> 
>> 
Re: PHP y MySQL
#816
Author: Jos� Miguel Santib��ez
Date: Fri, 10 Aug 2007 16:49
18 lines
2025 bytes
En el cap�tulo anterior (news:f9i3n6$e71$1@sirius.globalcom.cl), Eduardo
Romero <edo@edo.cl> dijo: 

> Le di mas vueltas al tema y al parecer es un error de punto flotante
> y como lo interpreta php en forma interna. La prueba
> esta que defines el maximo con otros valores similares y a veces
> resulta y otros no.
> 
> Al invertir el while, tb sucede el mismo error.
> 


sip.. el "2.5" se transforma internamente en un "2.4999999"

-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads