2016-08-09 7 views
2

Je veux avoir la valeur absolue d'un long double.usines de fabrication C++ (long double) d'avertissement du compilateur

Selon <cmath> ou <math.h>, ce qui suit est disponible:

 double fabs (double x); 
    float fabs (float x); 
    long double fabs (long double x); 

Cependant, lorsque vous faites long double ld = fabs(static_cast<long double>(0));, je reçois le avertissement suivant (LLVM 7.1):

Absolute value function 'fabs' given an argument of type 'long double' but has parameter of type 'double' which may cause truncation of value

Comment venir?

Quels sont les autres moyens pour obtenir la valeur absolue d'un long double?

Edit:

std::abs a finalement fait le travail. Cependant, std::fabs n'a pas. Comme cela a été souligné dans les commentaires, cela peut être dû à une implémentation non conforme.

+0

Avez-vous vérifié dans les en-têtes publics si la fonction est mise en œuvre, ou vous avez seulement vérifier les documents? – JVApen

+0

Seuls les documents, en supposant que c'est standard. Apparemment, j'avais tort (?) – Stingery

+1

Peut-être essayer 'std :: fabs' ou' std :: abs'? –

Répondre