PHP - Comparacion variable de coma flotante

   
Vista:

Comparacion variable de coma flotante

Publicado por Javier (46 intervenciones) el 26/11/2012 19:20:42
Buenas tardes.

No consigo saber por que estas comparaciones no funcionan.

Todas las variables estan inicializadas.

1
2
3
4
5
6
7
8
9
10
11
12
if (is_float($amax) < is_float($ele)) { // altura maxima
						    $amax = $ele;
						   }
if (is_float($amin) > is_float($ele)) { //altura minima
						    $amin = $ele;
						   }
if (is_float($vmin) > is_float($vel)) { //velocidad minima
						    $vmin = $vel;
						   }
if (is_float($vmax) < is_float($vel)) { //velocidad maxima
						    $vmax = $vel;
}


Alguien me puede orientar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Comparacion variable de coma flotante

Publicado por xve (5513 intervenciones) el 26/11/2012 20:51:36
Hola Javier, la función is_float() devuelve true o false dependiendo de si el valor es un float, no el valor de la variable...

http://php.net/manual/es/function.is-float.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparacion variable de coma flotante

Publicado por Javier (46 intervenciones) el 26/11/2012 21:36:23
Como siempre, muchas gracias.
De todas formas puse esta funcion pues con el siguiente codigo, que considero correcto, no funcina:

1
2
3
4
5
6
7
8
//variables iniciadas:
 
$vmin = 9.10; //velocidad minima			
$vmax = 0.01; // Velocidad maxima
$vmed = 0.01; // velocidad media
$amax = 0.01; // altura maxima
$amin = 999.10; // altura min
$amed = 0.01; // altura media


Datos del fichero:
ele alt
0.1847 152.0
0.2315 157.9
0.8964 154.6

Osea que al compararse alguno debe entrar....

1
2
3
4
5
6
7
8
9
10
11
12
13
if ($ele > $amax) { // altura maxima
    echo $amax. "-altura maxima es mayor que ele -".$ele;
    $amax = $ele;
    }
if ($ele < $amin) { //altura minima
    $amin = $ele;
    }
if ($vel < $vmin) { //velocidad minima
    $vmin = $vel;
    }
if ($vel > $vmax) { //velocidad maxima
    $vmax = $vel;
    }


No le veo ningun problema pero no aparentemente ningun registo cumple ninguna de las condiciones y los valores de las variables lo cumplen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparacion variable de coma flotante

Publicado por Javier (46 intervenciones) el 26/11/2012 22:45:55
Hola de nuevo.
Decir que si evalua los if y que se asigna los valores a la variable pero solo cuando lee el primer registro luego ya, aparentemente no evalua.


Peor que antes.....

Gracias.
Javier.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Comparacion variable de coma flotante

Publicado por xve (5513 intervenciones) el 27/11/2012 07:31:21
Javier, que valen las variables $ele y $alt? donde se definen?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparacion variable de coma flotante

Publicado por Javier (46 intervenciones) el 27/11/2012 07:56:04
Te paso el bucle for completo:

foreach ($xml->trk as $trk) {
$trks =$trk->trkseg;
foreach($trks->trkpt as $trkpt){
// $trkpt=$trks->trkpt;
$ele = $trkpt->ele;
$vel = $trkpt->speed;
$lat = $trkpt['lat'];
$lon = $trkpt['lon'];
$contador = $contador + 1;
//echo $amax. "-altura maxima es mayor que ele -".$ele;
if ($ele > $amax) { // altura maxima
echo $amax. "-altura maxima es mayor que ele -".$ele;
$amax = $ele;
}
if ($ele < $amin) { //altura minima
$amin = $ele;
}
if ($vel < $vmin) { //velocidad minima
$vmin = $vel;
}
if ($vel > $vmax) { //velocidad maxima
$vmax = $vel;
}
echo "<option value=".$contador.", ".$vel.", ".$ele.", ".$lat.", ".$lon.">".$contador. ", ".$vel.", ".$ele.", ".$lat.", ".$lon. "</option>";
$amed = $amed + $ele;
$tota = $tota + $ele;
$vmed = $vmed + $vel;
$totv = $totv + $vel;
}
}

Espero que sirva algo mas.

Un saludo,
Javier.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparacion variable de coma flotante

Publicado por Javier (46 intervenciones) el 27/11/2012 11:09:12
Hola.
Parece que se soluciona así:

if ( (0.0+$ele) > (0.0+$amax) ) { // altura maxima
// echo $amax. "-altura maxima es mayor que ele -".$ele;
$amax = $ele;
};
if ( (0.0+$ele) < (0.0+$amin) ) { //altura minima
$amin = $ele;
};
if ( (0.0+$vel) < (0.0+$vmin) ) { //velocidad minima
$vmin = $vel;
};
if ( (0.0+$vel) > (0.0+$vmax) ) { //velocidad maxima
$vmax = $vel;
};
De todas formas , sigo investigando pues alguno no lo compara.

Un saludo y gracias a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar