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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  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 1,270 veces)
Leguim


Desconectado Desconectado

Mensajes: 673



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
***
Conectado Conectado

Mensajes: 1.751



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: 673



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
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.279


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

MinusFour
Moderador Global
***
Conectado Conectado

Mensajes: 5.165


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
***
Conectado Conectado

Mensajes: 1.751



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 11,740 Último mensaje 14 Octubre 2010, 17:34 pm
por ~ Yoya ~
cambiar numeros decimales a enteros
Dudas Generales
ZeroRcp 4 1,514 Ú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 1,709 Último mensaje 20 Agosto 2015, 18:58 pm
por estudiante_1
promedio de sumatoria de numeros enteros
Programación General
vaness182 1 1,289 Ú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 1,481 Último mensaje 28 Abril 2018, 20:24 pm
por JPS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines