高分:一个怪异的浮点数问题
1.
double flag = 100;
double tmp = flag / 30;
结果:flag 的值变为 -1.#IND000000000000
2.
float flag = 100;
double tmp = flag / 30;//或者 float tmp = flag/30
结果:tmp 为 -1.#IND000000000000
3.
int tmp = (int)floor(20.1);//<math.h>
结果:tmp 为 0.00000000000000000
如果将上面的代码放到另外一个函数里面就没任何问题(其他工程里面也没问题)。
换成int类型没问题:
int flag = 100;
int tmp = flag / 30;//没有问题
注:整个函数就只有上面的代码。
请问:
1. 这些问题可能的原因是什么 ?精度(应该不是吧,因为其他函数里面是可以的)?堆栈(不懂...)?
2. 为什么int可以,double不可以 ?
3. 如何解决这个问题 ?
[解决办法]
你最好把这个函数贴上来,这样看不出什么问题
[解决办法]
我这里正常呀,没搞明白你啥问题?
[解决办法]
这个不属于正常现象,没有上下文的确不好解释……
[解决办法]
我怀疑是函数调用的问题,需要你的调用环境
[解决办法]
你可以把你的代码片断贴上来,帮你看看,没有代码没办法看
[解决办法]
貌似我以前也遇到过,后来我把工程清空从新编译就没问题了,只是还是不知道是咋啦,灵异事件吧。
[解决办法]
没链接浮点数库?
[解决办法]