請幫我編碼。我想製作一個這樣的程序。對不起英文不好。N = 2^x,如果爲真,則爲true。爲什麼它錯了?
給定的輸入:
N
where N is an integer.
回報:
True if N = 2^x, where x is an integer.
我試圖做到這一點,但它不工作,因爲我想要的。
using namespace std;
int main()
{
float a,b,c;
cin>>a;
c=log10(a)/log10(2.0);
b=pow(2,c);
if(b==a)
{
cout<<"TRUE"<<endl;}
else
cout<<"FALSE"<<endl;{
}
}
請幫助我。謝謝。
嘗試打印'b'和'a',以及中間計算結果(在本例中爲print'c')。他們是一樣的價值嗎?爲什麼或者爲什麼不? – Patashu
浮點算術,特別是對數運算,由於有限精度而引入一些不精確 –
我想我正在做第10次......你的變量是浮點數,並且它們在計算機內存中沒有以精確的方式表示。谷歌它,你會發現很多信息:) – sashkello