web-dev-qa-db-fra.com

Comment obtenir une valeur absolue de double - c-language

Je veux la valeur absolue d'un double négatif - et je pensais que la fonction abs- était aussi facile à utiliser qu'en Java - mais PAS!

Il semble que la fonction abs- renvoie un int parce que j'ai la valeur 3.8951 et que le résultat est 3.000000

double d1 = abs(-3.8951);
printf("d1: ...%lf", d1);

Comment puis-je résoudre ce problème? C’est-à-dire que je veux la valeur absolue de double.

48
user3155478

Utilisez fabs() (in math.h) pour obtenir une valeur absolue pour double:

double d1 = fabs(-3.8951);
75
herohuyongtao

Utilisez fabs au lieu de abs pour rechercher la valeur absolue des types de données double (ou float). Incluez l'en-tête <math.h> pour la fonction fabs

double d1 = fabs(-3.8951);
15
haccks

Il est à noter que Java peut surcharger une méthode telle que abs pour qu’elle fonctionne avec un entier ou un double. En C, la surcharge n'existe pas, vous avez donc besoin de fonctions différentes pour l'entier et le double.

4
lurker

J'ai trouvé que l'utilisation de cabs(double), cabsf(float), cabsl(long double), __cabsf(float), __cabs(double), __cabsf(long double) est la solution

0
Firas Nomaan