Похоже, у вас есть удобочитаемая научная запись (с десятичным показателем), а не двоичный показатель, который double
использует внутри.Вот почему ldexp
не работает для вас.
Если у вас есть строка "1472e-2"
, вы можете использовать strtod
для ее анализа, в результате чего 14.72
Если у вас есть 1472и -2 в двух отдельных переменных, вы можете просто применить определение научной нотации
double z = x * pow(10.0, y);