【发布时间】:2021-11-08 05:56:21
【问题描述】:
对于某些值(如 9),它可以完美运行,但对于大多数(如 7、19 或 6),它会从返回(二进制)值中减去 1。
#include<iostream>
#include<cmath>
using namespace std;
int decimaltobinary(int);
int main()
{
int num;
cout<<"Enter the number: ";
cin>>num;
cout<<num<<" in decimal = "<<decimaltobinary(num)<<" in binary.";
return 0;
}
int decimaltobinary(int num)
{
int remainder,i=0,binary=0;
while(num!=0)
{
remainder=num%2;
num=num/2;
binary=binary+remainder*pow(10,i);
i++;
}
return binary;
}
【问题讨论】:
-
问题是你对你用哪种语言编程感到困惑。代码是C++,但你已经标记了C语言。仅供参考,C 语言没有
std::cout也没有std::cin。我建议您更新语言标签。 -
pow使用不精确的浮点数。它可能会引入您看到的一个错误。如果您从1开始i,则可以将其乘以10而不是递增。然后你可以使用i而不是pow(10,i),后者只会使用整数。 -
十进制和二进制是值的文本表示。将值转换为其二进制表示意味着将其转换为文本。
-
而不是
pow(10, i),只是在循环之前累积乘数:int i = 1;,在循环中执行binary = binary + i * remainder; i *= 10;。 -
该程序对我来说运行良好(如果 num
标签: c++ binary decimal data-conversion