我有表示格式的指数:“1.45e004”或“1.45e-04”或“-1.45e004”。
[请注意第三个中的减号]
检查(==、!=、>、<、<=、>= 等)不适用于当前格式的指数 [不正确或不返回结果]。
但是,使用 fabs 转换指数适用于前两个,但不适用于最后一个,因为 fabs 删除了减号(因此使值变为正值而不是应为负值)。
我的问题是:
1)有没有办法将指数转换为包含有符号值的绝对值?
[晶圆厂无法做到这一点]
或者
2)有没有办法 [或函数] 将一个指数与另一个指数进行比较(必须能够做到 ==、!=、>、<、>=、<=)?
或者
3)有没有办法从指数中提取两个值。
例如:“-1.45e-04”[值 1 = -1.45,值 2 = -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)通过分别比较指数中的两个数字来使用笨拙的解决方法进行直接比较。
[背景细节]
实际程序跨越 7 个头文件和 1 个 cpp,因此我无法显示特定的段,因为它是交织在一起的。
因此,它的任务是:从 ACE 卫星下载的文件被解析为参数,加载到内存中,转换为适当的类型。然后对存储的类型进行排序和准备(当前阶段)以呈现图形(尚未实现)。
目前,我正在处理指数(以上述格式存储在 ACE 卫星文本文件中)。需要扫描这些指数以找到最大指数和最小指数,因此图形可以在两者之间正确间隔。在此之后,将比较每个指数以查看它是大于(在图表上较高)还是小于(在图表上较低)给定的一组数字。
对于该任务,我需要指数之间的比较。鉴于我对他们没有经验,我决定在这里问。