Foros del Web » Programando para Internet » PHP »

error en comparación de números

Estas en el tema de error en comparación de números en el foro de PHP en Foros del Web. tengo este código Código PHP: $operacion = ( $_POST [ "numero" ]* 12 ); $operacion2 = ( $operacion / 12 );   if ( $_POST [ "numero" ] ==  $operacion2  ...
  #1 (permalink)  
Antiguo 17/08/2011, 14:36
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 meses
Puntos: 0
error en comparación de números

tengo este código
Código PHP:
$operacion= ($_POST["numero"]*12);
$operacion2= ($operacion/12);

  if (
$_POST["numero"] == $operacion2 ){

  echo
"es verdad ";
 
}else{
  echo
"no es verdad";

  } 
paso lo valores mediante un formulario y los valores solo pueden ser numeros

el problema es que algunos valores son iguales y aun asi dice que no es verdad porque puede ser? gracias
  #2 (permalink)  
Antiguo 17/08/2011, 14:54
Avatar de lordglazoon  
Fecha de Ingreso: julio-2011
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: error en comparación de números

que extraño, seguro que te pone "no es verdad", debería colocar "es verdad", ya que estas siempre comparando el mismo numero.
  #3 (permalink)  
Antiguo 17/08/2011, 14:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: error en comparación de números

Primero verifica si tienes valor en $_POST porque un valor vacio o no numerico se convierte en 0. Lo otro a mí me resulto correctamente usandolo de esta forma
Código PHP:
Ver original
  1. <?php
  2. $operacion= ($_GET['numero']*12);
  3. $operacion2= ($operacion/12);
  4.  
  5. if ($_GET['numero'] == $operacion2 ){
  6.     echo "es verdad";
  7. }else{
  8.   echo "no es verdad";
  9. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 17/08/2011, 14:58
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: error en comparación de números

es mas pongo un numero que me da que no es 0.346
Código PHP:
<?php
$operacion
= (0.346*12); 
$operacion2= ($operacion/12); 

  if (
0.346 == $operacion2 ){ 

  echo
"es verdad "
  
}else{ 
  echo
"no es verdad"

  }
  
?>
probadlo
  #5 (permalink)  
Antiguo 17/08/2011, 15:14
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: error en comparación de números

En el manual PHP de comparación sobre float dice esto:

Cita:
Warning
Comparación de números de punto flotante

Debido a la forma en que son representados internamente los floats, no se deben probar por igualdad dos floats.

Ver la documentación de float para más información.
así que tendrás que compararlos de esta manera:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $operacion = (0.346 * 12);
  4. $operacion2 = ($operacion / 12);
  5.  
  6. if (bccomp(0.346, $operacion2) == 0) {
  7.    
  8.     echo "es verdad ";
  9.  
  10. } else {
  11.     echo "no es verdad";
  12.  
  13. }

Cita:
nunca se comparan números de punto flotante para igualdad. Si es necesaria una mejor precisión, las funciones matemáticas de precisión arbitraria y las funciones gmp están disponibles.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 17/08/2011, 15:20
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: error en comparación de números

muchas gracias esta solución funciona perfecta
  #7 (permalink)  
Antiguo 17/08/2011, 15:26
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: error en comparación de números

Igual también se pueden forzar los tipos y compara como es verdad:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $operacion = (0.346 * 12);
  4. $operacion2 = $operacion / 12;
  5.  
  6. if ((string) 0.346 == (string) $operacion2) {
  7.     echo "es verdad ";
  8. } else {
  9.     echo "no es verdad ";
  10. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 17/08/2011, 15:54
 
Fecha de Ingreso: agosto-2011
Mensajes: 17
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: error en comparación de números

la anterior todas las pasaba a es verdad esta parece que va mejor gracias

Etiquetas: formulario
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 19:05.