关于小数
当输入“/”时,一般都是输出商,不会带小数点。
比如:2/3=0;9/2=4......都是 A/B=商。但有时,做题时想要保留小数点,我就不知道该怎么办。
如:一本通中的1072
我一开始的代码:
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 int n,a[21][3]; 7 double x,y; 8 cin>>n; 9 for(int i=1;i<=n;++i) 10 { 11 for(int j=1;j<=2;++j) 12 cin>>a[i][j]; 13 } 14 x=a[1][2]/a[1][1]; 15 for(int i=2;i<=n;++i) 16 { 17 y=a[i][2]/a[i][1]; 18 if(y-x>0.05) 19 cout<<"better"<<endl; 20 else if(x-y>0.05) cout<<"worse"<<endl; 21 else cout<<"same"<<endl; 22 } 23 return 0; 24 }
结果按给的输入样例输入后,输出全是“same”。之后发现在代码中的想x,y都是整数0。因为“/”只会输出商,不会有小数点。我有上网查了资料,发现若想让“/”除出带小数点的数,可以在运算前加“1.0*”。如:x=1.0*1/2; x=0.5;我就有改了代码:
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 int n,a[21][3]; 7 double x,y; 8 cin>>n; 9 for(int i=1;i<=n;++i) 10 { 11 for(int j=1;j<=2;++j) 12 cin>>a[i][j]; 13 } 14 x=1.0*a[1][2]/a[1][1]; 15 for(int i=2;i<=n;++i) 16 { 17 y=1.0*a[i][2]/a[i][1]; 18 if(y-x>0.05) 19 cout<<"better"<<endl; 20 else if(x-y>0.05) cout<<"worse"<<endl; 21 else cout<<"same"<<endl; 22 } 23 return 0; 24 }
这样输入后,x,y就是小数了。
通过这个题的学习,我了解到了如何让“/”不只是整除。