Как конвертировать в Double из мантиссы и экспоненты в C ++ - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь создать двойное число или число с плавающей точкой из мантиссы и экспоненты в c ++

, то есть: у меня есть это число: 1472E-2 Mantissa = 1472 Exponent = -2

I 'я пытаюсь получить это число: 14.72, цель этого - только напечатать эти числа.

Я пробовал ldexp, std :: setprecision

1 Ответ

0 голосов
/ 07 февраля 2019

Похоже, у вас есть удобочитаемая научная запись (с десятичным показателем), а не двоичный показатель, который double использует внутри.Вот почему ldexp не работает для вас.

Если у вас есть строка "1472e-2", вы можете использовать strtod для ее анализа, в результате чего 14.72

Если у вас есть 1472и -2 в двух отдельных переменных, вы можете просто применить определение научной нотации

double z = x * pow(10.0, y);
...