【发布时间】:2014-01-16 00:05:56
【问题描述】:
我有一个函数使用int,比如2488,来存储温度值。我必须调用一个函数getTemp() 来获取int。 getTemp 函数返回 double 并使用 int 返回正确的数字。所有getTemp() 所做的都是return (double)x / 100.0,在这种情况下x 是2488。
然后返回的双精度为24.88。然后将该值发送到另一个函数,该函数将double 添加到数组中。函数称为DAaddDouble(double m, int x, int y),其中m 是要添加的值,x 和y 是指定在何处添加double 的坐标。
问题是,它变成了nan。
double a = getTemp();
//a is correct, i.e. 24.88
DAaddDouble(a, x, y);
/*-----------inside DAaddDouble----------*/
void DAaddDouble(double m, int x, int y)
{
//at this point, a (or m, same) is 0.nan
cord = x + y*40; //where to put the double
snprintf(DARRAY[cord], 5, "%f",m);
printf(....DARRAY[cord]...);
}
输出:-nan
【问题讨论】:
-
你是如何定义 DARRAY 的?将 DAaddDouble 函数更改为 void DAaddDouble(double m, int x, int y) as a or m is 24.88
-
对不起,打错了,是双倍的,但问题仍然存在。
-
你是如何定义 DARRAY 的?
-
您的问题不太可能出在您引用的片段中。尝试在调试器中逐行查看
m何时变为NaN,如果有的话。
标签: c floating-point double nan