C++爆值問(wèn)題
題目如圖我的代碼如下:#include<iostream>using namespace std;main(){double a,b,c,d,i=1,n;int x;cin>>a>>b>>n;c=a/b;while(i<=n){c=c*10;x=c;x=x%10;d=c*b;i=i+1;while(d>=b){ d=d-b; c=d/b;}cout<<c<<" "<<d<<endl;}cout<<x<<endl;main();}問(wèn)題:執(zhí)行后約10位出現(xiàn)數(shù)據(jù)錯(cuò)誤,后約197位無(wú)數(shù)值輸出,,但是我每次將c和d的數(shù)值刷新過(guò),,為什么還是會(huì)出現(xiàn)爆值(爆值情況:以輸入“1 7 50”為例0.142857 10.428571 30.285714 20.857143 60.571428 40.714283 4.999980.142827 0.9997870.428267 2.997870.282669 1.978680.82669 5.786830.2669 1.86830.669001 4.683這為輸出中間一段c和d的數(shù)值輸出)(注:“cout<<c<<" "<<d<<endl;”是為了方便查看c和d的數(shù)值,“main();”是為了重復(fù)運(yùn)行方便測(cè)試)感謝大佬的解答
你的問(wèn)題,,因?yàn)楦↑c(diǎn)運(yùn)算有誤差引起的,。你的第三步就出問(wèn)題了,正確的應(yīng)該是0.8571428
這個(gè)題,完全不用浮點(diǎn),,模擬平時(shí)豎式算法,,以下是我寫(xiě)的參考
#include<iostream>using namespace std;int main(){inta,b,n,x;cin >> a >> b >>n;x = a % b;if(x == 0) { cout<<"0";return 0;};while(--n) {//cout << x*10/b;x=x * 10;x = x % b;if(x == 0)break;} //cout << endl;cout << x*10/b;return 0;}
Tags: