f=(3*(log(Cm)/log(2)+0.5)+6)/b+9; (1)
f=1/b*(3*(log(Cm)/log(2)+0.5)+6)+9; (2)
这两个表达式看上去表达了同一个意思,但是结果完全不同。前者的值是波动变化的,后者的值恒定是9。为这个问题困扰了我一天,后来查手册,才发现如果/运算的两个数中有一个数为实数,则结果是double型。如果运算两端的数都为整数,则结果为整数。真让人羞愧!
例如5/3=1,这也就是为什么(2)中的f的值恒为9的原因,因为b是整数,所以1/b=0。
小的细节决定成败,从小事做起。
阅读(15076) | 评论(0) | 转发(0) |