абсолютное значение — C ++ fabs (long double) предупреждение компилятора

Я хочу иметь абсолютное значение long double,

В соответствии с <cmath> или же <math.h>доступно следующее:

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

Однако при выполнении long double ld = fabs(static_cast<long double>(0));Я получаю следующее предупреждение (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

Как так?

Какие есть еще способы получить абсолютное значение long double?

Редактировать:

std::abs в конце концов сделал работу. Тем не мение, std::fabs не сделал. Как было указано в комментариях, это может быть связано с несоответствующей реализацией.

2

Решение

Согласно cppreference http://en.cppreference.com/w/c/numeric/math/fabs а также http://en.cppreference.com/w/cpp/numeric/math/fabs версия C fabs в глобальном пространстве имен принимает только double аргумент, и вам нужно будет использовать fabsl, тем не мение std::fabs или же std::abs должен иметь надлежащее long double перегрузки для вас.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]