在此代码中,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++;
}
。
if ('#1_arrow'.class != 'rotate') {
$('#1_arrow').addClass('rotate');
}else if('#1_arrow'.class == 'rotate'){
$('#1_arrow').removeClass('rotate');
}
这是我遇到过的最奇怪的问题。问题是codechef威严挑战问题1.
答案 0 :(得分:3)
正如潜伏者的评论中所提到的,这并不是你所期望的:
while(!(rr == (int)rr))
更好的方法是:
while((rr - floor(rr)) > .0001)
这可以避免投射并解释浮点并不总是精确表示的事实。