int

Promedio de arreglo en C++

En este post vamos a ver un algoritmo muy sencillo en C++: obtener el promedio de los valores de un arreglo.

Vamos a hacerlo en una función que recibe el arreglo y la longitud del mismo.

Aunque lo haremos con un arreglo de enteros, funcionará perfecto para otro tipo de arreglos, simplemente cambiando los tipos de dato.

Continue reading…

Validar int en Python

Validar número entero y flotante (int y float) en Python

Para validar que la separación horizontal y vertical sean enteros en WaterPy, tuve que implementar una forma de saber si un número es entero en Python.

Eso es porque el número es cadena, pero no podemos estar seguros de que el usuario siempre escribirá un entero y hay que validar para saber si es un entero bien formado.

Validar int en Python

Validar int en Python

Por eso es que hoy veremos cómo validar o saber si un número es entero en Python. También veremos cómo saber si es un flotante y finalmente comprobar si una cadena tiene únicamente un punto.

Continue reading…

Valor absoluto en C, o convertir número a positivo

Convertir número negativo a positivo en C

En este post veremos cómo convertir un número negativo (ya sea entero o flotante) a positivo en C. Incluso si el número ya es positivo, no pasará nada ni habrá errores al convertirlo utilizando la función abs, fabs y fabsf.

Valor absoluto en C, o convertir número a positivo

Valor absoluto en C, o convertir número a positivo

Para esto, usaremos una función matemática (o lo que sea) llamada valor absoluto, que devuelve la distancia entre dos puntos de una recta; sin importar si uno de ellos es negativo, porque la distancia siempre es positiva.

Continue reading…

Equivalentes a ord y chr en C

Hoy estaba trabajando con C y al buscar las funciones ord y chr (como las que existen en Python) me di cuenta de que no existen.

Todo esto es debido a que ord y chr podrían ser fácilmente remplazadas por operaciones del lenguaje, pues al final, una variable de tipo char es un entero. Lo que explico es lo que vimos cuando convertimos un entero a carácter, o un carácter a entero.

Veamos cómo podemos tener un equivalente a chr y ord en C.

Continue reading…

Convertir entero a char en C

Hoy veremos la operación inversa a convertir un char a un entero en C, es decir, convertir un número entero a su representación en carácter. Por ejemplo, convertir 1 a ‘1’.

Esta conversión no funciona para números mayores a 9, porque ya no tienen un único dígito; para ello mejor podemos ver cómo convertir un número a cadena en C, en lugar de convertirlo a char.

Pero bueno, vamos allá y veamos cómo convertir un dígito entero a carácter en C.

Continue reading…

Cómo saber si un número es narcisista en Python

Introducción

Hoy veremos cómo implementar un algoritmo para saber si un entero es narcisista usando el lenguaje de programación Python.

Número narcisista en Python

Número narcisista en Python

Si no sabes cómo funciona este algoritmo o qué cosa es un número narcisista, te recomiendo leer esto.

Por cierto, recuerda que debes tener instalado el intérprete de Python. Si no sabes cómo, mira cómo instalar Python 3 y ponerlo en la PATH.

Continue reading…

Castear valores en MysQL

Introducción

MySQL es el gestor de base de datos más querido. Seguramente alguna vez vamos a querer castear un valor.

Castear un valor es cambiar su tipo, o convertirlo a otro tipo de dato. Por ejemplo, puede que necesitemos convertir una cadena a entero, a flotante, booleano, etcétera.

En mi caso tenía que cambiar todos los datos de mi tabla para que dejaran de ser flotantes y fueran enteros.

Veamos entonces algunos ejemplos de cómo castear o cambiar valores en MySQL.

Sintaxis

Bueno, MySQL en su sitio oficial dice que la sintaxis es:

CAST(columna AS NUEVO_TIPO_DE_DATO);

Es una función que castea valores. Y los tipos de datos son:

  • BINARY
  • CHAR
  • DATE
  • DATETIME
  • DECIMAL
  • JSON
  • NCHAR
  • SIGNED
  • TIME
  • UNSIGNED

Para convertir a entero elegimos SIGNED o UNSIGNED. La diferencia es que el que tiene signo soporta valores negativos, y el unsigned sólo soporta enteros (útil cuando queremos almacenar grandes números positivos).

Ejemplos

Decimal o flotante a entero

Cuando queremos convertir un valor flotante (como 9.5) a entero, el primer valor se redondeará hacia abajo o hacia arriba.

Esto depende de la parte decimal. Si la parte decimal es menor que cinco, entonces se redondea hacia abajo. Si es 5 o mayor que eso, se redondea hacia arriba.

Aquí algunas pruebas:

SELECT CAST(9.5 AS SIGNED); # Salida => 10
SELECT CAST(0.5 AS SIGNED); # Salida => 1
SELECT CAST(0.4 AS SIGNED); # Salida => 0
SELECT CAST(1.3335 AS SIGNED); # Salida => 1
SELECT CAST(1.50000 AS SIGNED); # Salida => 2

 

Entero a flotante

De esta conversión no hay mucho que decir. Simplemente redondeará y agregará los ceros a la derecha del punto.

Te invito a leer este post sobre decimales para entender mejor la conversión.

Si convertimos, por ejemplo, el entero 5 a un decimal con una precisión de 3, este se convertirá en 5.000.

Aquí algunos ejemplos:

SELECT CAST(5 AS DECIMAL(7, 3)); # Salida => 5.000
SELECT CAST(5 AS DECIMAL(7, 5)); # Salida => 5.00000

Si no entiendes el número 7, lee el post que mencioné arriba. Básicamente le decimos a MySQL que la mayor longitud del número será de 7 cifras, y el número a la derecha (3 y 5 respectivamente) es para indicar cuántos decimales se ocuparán.

En el primer caso ocupamos 3 decimales y en el segundo 5.

Entero a cadena

Igual esto es de lo más sencillo. Simplemente convertimos un entero, que será el mismo entero pero representado como cadena. 5 se convierte en “5”.

La diferencia es que podemos operar con funciones de cadena, ya que ahora sí serán de ese tipo. De todos modos he probado y no hay diferencia entre trabajar con cadena o con enteros, ya que el motor infiere.

Aunque si queremos asegurarnos, podemos hacerlo así:

SELECT CAST(123 AS CHAR); # Resultado => 123

Entero a booleano

Ahora veamos cómo convertir un número a true o false, o lo mismo que convertir un int a un booleano.

MySQL no proporciona una función para esto, pero podemos utilizar la función IF.

Conclusión

Como podemos ver, podemos castear cualquier tipo de dato a otro tipo de dato, aunque primero debemos evaluar los resultados para no confundirnos ni realizar cosas erróneas.

Char a Int en Arduino

Si queremos convertir un char a entero en Arduino, podemos usar:

char c = '5';
int convertido = int(c);

El resultado sería el número 53, porque el número 5 es el carácter ASCII número 53. Nosotros no queremos eso, nosotros esperábamos un que ‘5’ se convirtiera en 5. Para obtener lo que realmente necesitamos, podemos usar lo siguiente:

char c = '5';
int convertido = String(c).toInt();

Ahora sí, el resultado sería 5 como entero. De esta forma podemos convertir carácter a entero, e incluso String a entero.