Как отделить длинный двойник от научной нотации
У меня есть текстовый файл с номерами в научной нотации, хранящиеся в виде строки символов, некоторые из которых имеют до 20
цифры. Например, 2.3456789e-015
, Мне нужно преобразовать это в длинный дубль, чтобы выполнить некоторые математические операции над ним.
Как я могу сделать это?
long double number = 2.3456789e-015;
Я знаю, что могу объявить длинный двойной тип, но проблема возникает тогда, когда у меня есть число в виде строки, и мне нужно отдельно указать основание и показатель степени. pow()
функция работает только на двойников и cpowl()
не может быть отформатирован в printf
, Важно, чтобы я сохранил точность!!
3 ответа
Если вы хотите преобразовать строку в long double, используйте [stold][1]
Если хотите printf
длинный двойной, используйте %Lf
,
sscanf(str, "%lf", &number)
понимает любые форматы. scanf и sscanf позволяют проверить результат конвертации:
if( sscanf(str, "%lf", &number) )
{
printf("number = %le\n", number);
}