CH2-2高精度分数化小数

2016-11-16  本文已影响11人  sixleaves

题目:给出三个整数 a b c, c为精度, 计算a/b, 精度可达1000。a, b <= 10^6
分析: 因为精度很高, 直接适用整数计算会导致溢出。所以选用字符串结构进行存储。计算的时候再进行转换。

// 分数化小数
// 高精度分数化小数
// 给出三个整数 a b c, c为精度, 计算a/b
char r[1024];
int solution4() {

    int a, b, c;
    while (scanf("%d%d%d", &a, &b, &c) &&a&&b&&c) {

        // 模拟除法
        int n = a % b;
        int m = a / b;

        for (int i = 0; i <= c; i++) {

           r[i] = n * 10 / b + '0';
           n = n * 10 % b;

        }
        r[c + 1] = '\0';
        int last = r[c] - '0';
        if (last % 10 > 5) r[c - 1] = r[c - 1] + 1;
        r[c] = '\0';
        printf("%d.%s", m, r);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读