gpt4 book ai didi

c++ - 我的二进制转换器有问题

转载 作者:行者123 更新时间:2023-11-30 02:35:37 25 4
gpt4 key购买 nike

我已经学习 C++ 大约一个月了。我做了一个二进制转换器。但是当我输入一个很大的数字时,比如200000000,它会返回一个错误的答案。所以我把所有的int都改成double,改了一些代码,还是不对。然后我在谷歌上搜索解决方案,但一无所获。请指出我的错误!谢谢!下面是代码。

(对不起,我的英语不好,这是我第一次在这个网站上提问。如果我有什么不对的地方,请指出并原谅我。)

#include <iostream>
#include <cmath>
using namespace std;
int main(){
double m,n,t,x,i=0;
cin>>n;
m=n;
do{
if(fmod(n,2)==0) n/=2;
else n=(n-1)/2;
i++;
}while(n>=1);
for(t=0;t<i;t++){
x+=fmod(m,2)*pow(10,t);
if(fmod(m,2)==0) m/=2;
else m=(m-1)/2;
}
printf("%.f\n",x);
return 0;
}

最佳答案

你应该改变doubleunsigned long long但由于以下代码,它无济于事。

        x+=fmod(m,2)*pow(10,t);
if(fmod(m,2)==0) m/=2;
else m=(m-1)/2;

此代码转换 m到十进制,以便可以打印。但是由于它以 10 的幂移动了一个,所以它甚至超出了 unsigned long long 的范围。 .

它可以通过声明 x 来修复作为string .更改 fmod% .

    x+=fmod(m,2)*pow(10,t);

x = ((m%2)? "1":"0") + x ;

cout << x << endl;在最后。祝你好运!

关于c++ - 我的二进制转换器有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com