Foros del Web » Programando para Internet » PHP »

Comparacion de decimales

Estas en el tema de Comparacion de decimales en el foro de PHP en Foros del Web. hola tengo la siguiente comparacion Código PHP: if(( $_POST [ "total" ]) == ( $_POST [ "emitido" ] +  $_POST [ "caja" ] +  $_POST [ "otro" ] +  $_POST ...
  #1 (permalink)  
Antiguo 18/09/2009, 08:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Exclamación Comparacion de decimales

hola tengo la siguiente comparacion
Código PHP:
if(($_POST["total"]) == ($_POST["emitido"] + $_POST["caja"] + $_POST["otro"] + $_POST["tercero"]))

{
echo 
"sno iguales";
}
{
echo 
"no lo son".$_POST["total"]."==".($_POST["emitido"] + $_POST["caja"] + $_POST["otro"] + $_POST["tercero"] );

me tira: "no lo son 55999.73 == 55999.73"

vi que con los numeros flotantes hay problemas pero no enteidno como resolverlo, alguien sabe?
  #2 (permalink)  
Antiguo 18/09/2009, 08:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Comparacion de decimales

porque no almacenas antes los valores??

Código PHP:
$foo $_POST['A'];
$bar $_POST['B'] + $_POST['B'];

if (
$foo == $bar// ...
if ($foo === $bar// ...
if (($float$foo == (float) $bar// ... 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/09/2009, 08:53
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 16 años, 7 meses
Puntos: 14
Respuesta: Comparacion de decimales

prueba guardando primero en una variable el resultado de la operacion matematica. Un saludo
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios
  #4 (permalink)  
Antiguo 18/09/2009, 08:56
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 2 meses
Puntos: 7
Respuesta: Comparacion de decimales

La estructura de los condicionales es parecido a esto:

Código PHP:
if (condicion){
//haz esto
}else{//si no
//haz lo otro

te falta el else
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
  #5 (permalink)  
Antiguo 18/09/2009, 09:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Cita:
Iniciado por djsos Ver Mensaje
prueba guardando primero en una variable el resultado de la operacion matematica. Un saludo
el else lo puse,solo q cuando resumi el codigo me olvide de ponerlo.

no entendi lo que me dij pateketrueke;

hahora hice esto:
Código PHP:
$ptotal = ($_POST["emitido"] + $_POST["caja"] + $_POST["otro"] + $_POST["tercero"]);
                
$dostotal = ($_POST["total"]);
                if(
$dostotal == $ptotal)
                {
}else
{

pero me sigue tirando el mismo error, lei que hay problemas cuando se suman float y q la resolucion amtematica es muy comlpicada puede ser?

Cita:
Iniciado por manoloOZ Ver Mensaje
el else lo puse,solo q cuando resumi el codigo me olvide de ponerlo.

no entendi lo que me dij pateketrueke;

hahora hice esto:
Código PHP:
$ptotal = ($_POST["emitido"] + $_POST["caja"] + $_POST["otro"] + $_POST["tercero"]);
                
$dostotal = ($_POST["total"]);
                if(
$dostotal == $ptotal)
                {
}else
{

pero me sigue tirando el mismo error, lei que hay problemas cuando se suman float y q la resolucion amtematica es muy comlpicada puede ser?
ya encontre la solucion, al parecer cuando los numeros son flotantes se pierde presicion en la suma o comparacion y para eso se usa esta funcion:

Código PHP:
if(bccomp($dostotal$ptotal,2) == 0
los primeros dos parametros son los que se comparan y el sigueinte es cuantos decimales se comparan.

aca les dejo el link con toda la explicacion detallada: http://www.hackingballz.com/herramie...pes.float.html

Última edición por GatorV; 18/09/2009 a las 09:36
  #6 (permalink)  
Antiguo 17/11/2015, 13:23
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: Comparacion de decimales

ho estoy teniedo el msimo problema
solo tengo una duda como se lee esa linea

if(bccomp($dostotal, $ptotal,2) == 0)

ya que mi comparacion es si numA que una flotante es mayor a onumB que es otro flotante

como se aplica esta instrucción? bccomp

saludos
__________________
gerardo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:37.