У меня есть показатели в представленном формате: «1.45e004» или «1.45e-04» или «-1.45e004».
[обратите внимание на знак минус в третьем]
Проверка (==,! =,>, <, <=,> = И т. Д.) Не работает на показателях [неверноили результаты не возвращаются] в их текущем формате.
Однако , преобразование экспоненты с использованием fabs работает для первых двух, но не для последнего, так как fabs удаляет знак минус (ergoсделать значение положительным, а не отрицательным, как это должно быть).
Мои вопросы, таким образом:
1) Есть ли способ преобразовать показатели в абсолюты, которые включаютзначения со знаком?
[fabs не может этого сделать]
ИЛИ
2) Есть ли способ [или функция (и)] сравнить одинпоказатель степени к другому (должен уметь делать ==,! =,>, <,> =, <=)? </p>
ИЛИ
3) Есть лиспособ извлечь два значения из показателя степени.
EG: "-1.45e-04" [Value1 = -1.45, Value2 = -4].
Ответы на вопросы 1 и / или 2 очень предпочтительны, так как 3 - обходной путь, который может иметь проблемы с реализацией (однако, в случаях 1 и 2 нет подходящих ответов).
[Примечание: C ++можно использовать методы, хотя предпочтительнее избегать потока]
Спасибо
int main(void)
{
//Not the actual program, but simple enough
char Arr[100];
double T1, T2;
sprintf(Arr,"-1.45e004");
T1 = atof(Arr);
printf("%f\n",fabs(T1)); //Fails to show the minus sign
return 0;
}
Общая цель может быть достигнута, таким образом, ответив на любой из трех вопросов:
Либо: 1) Прямое сравнение (с использованием функции) между двумя показателями в данном формате, чтобы увидеть, являются ли они одинаковыми, не одинаковыми, большими, меньшими (и т. Д.) Для сортировки наибольшего показателя по наименьшему показателю (нев программе указывается, что реализация сортировки не имеет значения: необходимо разрешить только проверку).
2) Косвенное сравнение путем преобразования его в другой тип, который можно сравнивать напрямую.
3) Прямое сравнение с использованием AWkward обойти, сравнив два числа в показателе степени отдельно.
[Детали фона]
Фактическая программа охватывает 7 заголовочных файлов и 1 cpp, поэтому я не могу отобразить определенный сегмент, поскольку он переплетен.
Задача такова: файлы, загруженные со спутника ACE, анализируются как аргументы, загружаются в память, преобразуются в соответствующие им типы.Затем сохраненные типы сортируются и подготавливаются (текущий этап) для визуализации графика (еще не реализовано).
В данный момент я имею дело с показателями (хранятся в спутниковых текстовых файлах ACE в формате, указанном выше.).Эти показатели необходимо просмотреть, чтобы найти наибольший показатель и наименьший показатель, чтобы график можно было правильно распределить между ними.После этого каждый показатель будет сравниваться, чтобы определить, больше ли он (выше на графике) или меньше (ниже на графике) заданного набора чисел.
Для этой задачи мне нужно сравнение между показателями,Поскольку я неопытен с ними, я решил спросить здесь.