elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: Números flotantes y enteros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: Números flotantes y enteros.  (Leído 3,448 veces)
Leguim


Desconectado Desconectado

Mensajes: 719



Ver Perfil
[Pregunta]: Números flotantes y enteros.
« en: 10 Agosto 2020, 03:07 am »

Hola,

estuve viendo la documentación de PHP de las funciones, is_int($x) y is_float($x)...

Código
  1. is_int($x) // devuelve true si un número es entero
  2. is_float($x) // devuelve true si un número es flotante
  3.  

De entrada se podría decir que tengo un inconveniente con estas dos funciones que tiene PHP, vendría siendo que si...

Código
  1. $number = '34.7';
  2.  
  3. is_float($number) // devolverá false ya que está en una cadena, lo mismo me pasaría con is_int pero cuando uso "is_numeric" que sería simplemente para ver si un valor es un número no tiene problema si es un número en una cadena o un número "normal".. pero acá hace diferencia...
  4.  

Ese vendría siendo el primer problema que tengo,

el segundo ya vendría siendo una pregunta para poder "redondear" un número flotante...

EDIT:
Código
  1. // Había una función "round" que sirve para eso...
  2. echo round(3.4);         // 3
  3.  


« Última modificación: 10 Agosto 2020, 03:37 am por MiguelCanellas » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.042



Ver Perfil
Re: [Pregunta]: Números flotantes y enteros.
« Respuesta #1 en: 10 Agosto 2020, 04:09 am »

El round() funciona tal cual, no comprendo bien tu duda: http://www.php.net/round

Con respecto a is_numeric(), is_int() y is_float(), pues primero se comprueba si es número, luego se hace la conversión implícita anteponiendo el signo + para finalmente revisar si el resultado es del tipo Entero o Flotante:

Código
  1. <?php
  2.  $number = '34.23';
  3.  
  4.  if ( is_numeric($number) ) {
  5.    if ( is_float(+$number) ) {
  6.      echo "$number es float";
  7.    } elseif ( is_int(+$number) ) {
  8.      echo "$number es entero";
  9.    }
  10.  } else {
  11.    echo "$number no es un valor numérico válido";
  12.  }
  13. ?>

Citar
34.23 es float


En línea

Leguim


Desconectado Desconectado

Mensajes: 719



Ver Perfil
Re: [Pregunta]: Números flotantes y enteros.
« Respuesta #2 en: 10 Agosto 2020, 04:16 am »

El round() funciona tal cual, no comprendo bien tu duda: http://www.php.net/round

Con respecto a is_numeric(), is_int() y is_float(), pues primero se comprueba si es número, luego se hace la conversión implícita anteponiendo el signo + para finalmente revisar si el resultado es del tipo Entero o Flotante:

Código
  1. <?php
  2.  $number = '34.23';
  3.  
  4.  if ( is_numeric($number) ) {
  5.    if ( is_float(+$number) ) {
  6.      echo "$number es float";
  7.    } elseif ( is_int(+$number) ) {
  8.      echo "$number es entero";
  9.    }
  10.  } else {
  11.    echo "$number no es un valor numérico válido";
  12.  }
  13. ?>


Hola!

Con el redondeo ya lo había resuelto por eso pegué ahí la solución y el "EDIT" para aclarar.

Con el otro problema, ¿por qué se pone el signo + antes? (por curiosidad)

Gracias!

En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: [Pregunta]: Números flotantes y enteros.
« Respuesta #3 en: 10 Agosto 2020, 19:30 pm »

Hola!

Con el redondeo ya lo había resuelto por eso pegué ahí la solución y el "EDIT" para aclarar.

Con el otro problema, ¿por qué se pone el signo + antes? (por curiosidad)

Gracias!


Es coherción de tipos implícita. Equivale a crear un objeto Número y pasarle el valor del string. Para que lo veas más claro:
is_float(+$number)
is_float($number * 1)
is_float($number - 0)

Como no puedes multiplicar ni restar un string, entonces se intenta utilizar algún tipo compatible con la operación.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: Números flotantes y enteros.
« Respuesta #4 en: 10 Agosto 2020, 20:55 pm »

Es coherción de tipos implícita. Equivale a crear un objeto Número y pasarle el valor del string. Para que lo veas más claro:
is_float(+$number)
is_float($number * 1)
is_float($number - 0)

Como no puedes multiplicar ni restar un string, entonces se intenta utilizar algún tipo compatible con la operación.

"+operando" Es conversión explicita. Cuando el simbolo se usa de manera unaria es un operador diferente que esencialmente es una conversión explicita a un número apropiado (muy parecido a javascript). Multiplicación y resta (y no negación) si hacen conversión implícita a los operandos.
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.042



Ver Perfil
Re: [Pregunta]: Números flotantes y enteros.
« Respuesta #5 en: 11 Agosto 2020, 01:34 am »

Con el otro problema, ¿por qué se pone el signo + antes? (por curiosidad)

- Puedes verlo en la documentación de PHP que es muy entendible, organizada y ejemplificada: https://www.php.net/manual/es/language.types.type-juggling.php (a diferencia de la horrible documentación de Python :¬¬)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
number_format() y numeros enteros (Solucionado) « 1 2 »
PHP
Littl3 10 13,868 Último mensaje 14 Octubre 2010, 17:34 pm
por ~ Yoya ~
cambiar numeros decimales a enteros
Dudas Generales
ZeroRcp 4 2,613 Último mensaje 27 Julio 2015, 19:38 pm
por engel lex
Programa que lea números enteros y nos diga cuántos números son pares.
Programación C/C++
estudiante_1 3 2,938 Último mensaje 20 Agosto 2015, 18:58 pm
por estudiante_1
promedio de sumatoria de numeros enteros
Programación General
vaness182 1 2,146 Último mensaje 7 Noviembre 2015, 05:36 am
por El Benjo
C - Tipos de datos - Flotantes - Adquirir rango de valores para flotantes
Programación C/C++
JPS 2 2,518 Último mensaje 28 Abril 2018, 20:24 pm
por JPS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines