1082:求小数的某一位(C C++)

    科技2022-07-11  82

    【题目描述】

    分数a/b化为小数后,小数点后第n位的数字是多少?

    【输入】

    三个正整数a,b,n,相邻两个数之间用单个空格隔开。0<a<b<100,1≤n≤10000。

    【输出】

    一个数字。

    【输入样例】

    1 2 1

    【输出样例】

    5

    【代码1.0】错误

    double在6位小数以后 数据不一定准确 导致余数过多时会产生误差

    #include <iostream> #include <cmath> using namespace std; int main() { double a ,b ,c ; int s; // 后用于取整数部分 cin >> a >> b >> c; s= a/b*pow(10,c); //第n位小数化为整数最后一位 舍去小数位 cout << s%10 ; // 取出最后一位 }

    【代码2.0】 正确

    这种方法0误差 被除数 除数 都定义为整形 运用除法规则一步一步进行 一位一位求出小数

    #include <iostream> using namespace std; int main() { int a,b,n,i; //都为整数 cin >> a >> b >> n; //被除数 除数 小数第n位 for(i=1;i<=n;i++) //循环n次 { a%=b; //运用除法规则 一步一步进行 a*=10; //不够除 补一位0继续除 } a/=b; //第n次循环后 输出a/b的整数部分 cout <<a; }
    Processed: 0.024, SQL: 8