2009-06-11 7 views
2

j'ai écrit un code en C (pas en C++):fonction abs en C

Mask1 = abs(Area1 * 2 + Area2 * -2); 

Area1, Area2 et masque1 sont trois variables doubles. (par exemple 3.00556, 34.3333) Mon problème est que abs renvoie une valeur entière (par exemple 30).

Que dois-je faire pour le réparer?

Cordialement.

Répondre

13

utilisation fabs

+1

Notez que cela est dû au fait que C ne prend pas en charge la surcharge de méthode, pour ceux provenant d'autres langues. –

+1

En fait, C n'a même pas de méthodes. Il a seulement des fonctions. ;) – Dima

1

utilisation fabs()

3

abs() prend un entier comme argument et retourne un résultat entier. Vos doubles sont automatiquement tronqués en entiers. Un compilateur C++ décent vous donnerait un avertissement. ;)

La fonction à utiliser ici est fabs() pour les doubles ou pour les flotteurs.