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.
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.
La función para el valor absoluto
Dependiendo de la precisión y el tipo de dato, necesitarás una función diferente. Si únicamente quieres saber el valor absoluto de un entero, incluye a:
#include <stdlib.h>
Y llama a abs(valor);
para obtener su representación positiva. Esta función es llamada abs
, que quiere decir algo así como absolute value.
En caso de que requieras más precisión, por ejemplo de un tipo double o float, usa las funciones fabs
y fabsf
respectivamente, las cuales están definidas en math.h
y puedes incluir así:
#include <math.h>
Así de simple es. Ahora veamos algunos ejemplos.
Convertir entero negativo a positivo en C
#include <stdio.h> // printf y scanf
#include <stdlib.h> // abs
int main(void) {
int negativo = -8;
printf("El valor absoluto de %d es %d", negativo, abs(negativo));
// El valor absoluto de -8 es 8
}
La función abs
devuelve un entero positivo.
Doble negativo a positivo en C
#include <stdio.h> // printf
#include <math.h> // fabs
int main(void) {
double negativo = -40.123;
printf("El valor absoluto de %f es %f", negativo, fabs(negativo));
// El valor absoluto de -40.123000 es 40.123000
}
En este caso usamos fabs
, el cual recibe y devuelve un double.
Flotante negativo a positivo en C
Para una variable de tipo float usamos fabsf
como se ve en el código:
#include <stdio.h> // printf
#include <math.h> // fabsf
int main(void) {
float negativo = -1.598;
printf("El valor absoluto de %f es %f", negativo, fabsf(negativo));
// El valor absoluto de -1.598000 es 1.598000
}
Conclusiones
Me parece que también existe la función fabsl
, la cual trabaja con el tipo long double
(lo vi aquí).
Existen muchas funciones debido a los tipos de datos; cada una tiene una precisión distinta que servirá de acuerdo a nuestras necesidades.
En la mayoría de casos usaremos abs
o fabsf
para ejercicios comunes. Recuerda que el objetivo de este post era explicar cómo convertir un número negativo a positivo, y ya vimos cómo hacerlo sin que importe el tipo de dato.