как превратить отрицательные числа в положительные - PullRequest
34 голосов
/ 20 января 2011

У меня отрицательное число с плавающей запятой:

a = -0.340515;

, чтобы преобразовать его в положительное число. Я использовал метод abs () как:

a = abs(a);

результат равен a = 0.000000;

Но мне нужен результат как 0.340515.

Может кто-нибудь сказать мне, как это сделать.

Ответы [ 7 ]

78 голосов
/ 20 января 2011

abs() только для целых чисел.Для плавающей запятой, используйте fabs() (или одну из строк fabs() с правильной точностью для любого фактического значения)

31 голосов
/ 29 августа 2013

Вы должны использовать:

abs () для int
fabs () для double
fabsf () для float

Выше функция также будет работать, но вы также можете попробовать что-то вроде этого.

    if(a<0)
    {
         a=-a;
    }
15 голосов
/ 06 декабря 2014

Используйте float fabsf (float n) для float значений.

Используйте double fabs (double n) для double значений.

Используйте long double fabsl(long double) для long double значений.

Используйте abs(int) для int значений.

0 голосов
/ 28 апреля 2019

Ну, в математике, чтобы преобразовать отрицательное число в положительное число, нужно просто умножить отрицательное число на -1;

Тогда ваше решение может быть таким:

a = a * -1;

или короче:

a *= -1;
0 голосов
/ 05 марта 2019
a *= (-1);

проблема решена. Если есть решение проблемы меньшего размера, то почему вы, ребята, идете к сложному решению. Пожалуйста, дайте людям указание использовать базовую логику, потому что тогда только люди могут обучать их логике программирования.

0 голосов
/ 07 июня 2015

Как указано выше, вам придется использовать определенный вариант abs (), основанный на целочисленном типе.

Однако я бы определил макрос как:

#define POSITIVE(n) ((n) < 0 ? 0 - (n) : (n))

чтобы я мог передать любое значение, особенно если не уверен насчет знака, и всегда получаю положительное значение.

0 голосов
/ 13 апреля 2015

Почему вы хотите использовать странные жесткие команды, когда вы можете использовать:

if(a < 0)
    a -= 2a;

Оператор if, очевидно, применяется только тогда, когда вы не уверены, будет ли число положительным или отрицательным.

В противном случае вам придется использовать этот код:

a = abs(a) // a is an integer
a = fabs(a) // a is declared as a double
a = fabsf(a) // a is declared as a float (C++ 11 is able to use fabs(a) for floats instead of fabs)

Чтобы активировать C ++ 11 (если вы используете Code :: Blocks, вам необходимо:

  1. Откройте Code :: Blocks (рекомендуемая версия: 13.12).
  2. Перейдите в «Настройки» -> «Компилятор».
  3. Убедитесь, что вы используете компилятор GNU GCC.
  4. Щелкните «Параметры компилятора», и на открытой вкладке щелкните «Флаги компилятора»
  5. Прокрутите вниз, пока не найдете: g ++ следует стандарту языка C ++ 11 ISO C ++ [-std = c ++ 11]. Проверьте это и нажмите OK.кнопка.
  6. Перезапустите Code :: Blocks, и тогда все готово!

После выполнения этих шагов вы сможете использовать fabs (a) для float вместо fabsf(a), который использовался только для C99 или меньше! (Даже C ++ 98 мог позволить вам использовать fabs вместо fабсф: P)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...