Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/01/2014, 07:53
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comprobar decimales

Hay otras formas de buscar un elemento en una cadena sin necesidad de recurrir al uso de expresiones regulares. Por cierto, hay otras formas de comprobar que el número contenga decimales.

Código PHP:
Ver original
  1. //El número a evaluar
  2. $numero = 43.50;
  3.  
  4. //Compruebo si el número es igual al entero del mismo
  5. echo $numero == (int) $numero ? "No contiene decimales" : "Contiene decimales";
  6.  
  7. //Tomo el segundo decimal luego del punto decimal
  8. $decimales = substr($numero, strpos($numero, ".") + 2);
  9.  
  10. /*
  11.   Si no se encuentra una longitud de caracteres para la posición del segundo decimal
  12.   Entonces el segundo decimal es un cero, caso contrario, es un número distinto a cero
  13.   Cabe recordar que 5.20 y 5.2, valen lo mismo, por eso se toma como si existiera
  14.   un cero aún cuando no se haya colocado uno a la derecha del cero
  15.   El siguiente mensaje se mostrará si y sólo si el número contiene decimales
  16. */
  17. if ($numero != (int) $numero)
  18.     echo strlen($decimales) === 0 ? "El segundo decimal es cero" : "El segundo decimal no es cero";

Los resultados que obtendría, son los siguientes:

Código HTML:
Ver original
  1. Contiene decimales
  2. El segundo decimal es cero

Si en lugar de 43.50, tuviera el 82.54, los resultados serían los siguientes:

Código HTML:
Ver original
  1. Contiene decimales
  2. El segundo decimal no es cero

Si en lugar de 82.54, tuviera el 41.00, los resultados serían los siguientes:

Código HTML:
Ver original
  1. No contiene decimales

No se mostró el segundo mensaje porque el número no contiene decimales, por lo tanto, no se puede comprobar si el segundo decimal es un cero, pues 41.00 vale lo mismo que 41. Anteponiendo (int) al número, estoy haciendo un cast, lo cual genera que el valor sea convertido de forma temporal al tipo de dato especificado, que en este caso es integer o entero.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand