请帮我编码。我想制作一个这样的程序。对不起英文不好。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