我在C面临着一个非常尴尬的局面

时间:2015-08-09 11:02:21

标签: c

在此代码中,rr的值仅在我使用printf语句时才能正常工作,否则即使rr实际上是rr = 2.0,代码也会进入while循环整数值,例如 double rr = log(c)/log(2); printf("Current value of rr is %lf\n",rr); while(!(rr == (int)rr)) { printf("hung in loop with c = %d\n",c); if(c % 2 == 0) c = c/2; else c = (c-1)/2; rr = log(c)/log(2); cc++; }

My full code here

if ('#1_arrow'.class != 'rotate') {
   $('#1_arrow').addClass('rotate');
}else if('#1_arrow'.class == 'rotate'){
   $('#1_arrow').removeClass('rotate');
}

这是我遇到过的最奇怪的问题。问题是codechef威严挑战问题1.

1 个答案:

答案 0 :(得分:3)

正如潜伏者的评论中所提到的,这并不是你所期望的:

while(!(rr == (int)rr))

更好的方法是:

while((rr - floor(rr)) > .0001)

这可以避免投射并解释浮点并不总是精确表示的事实。