題目:給出三個整數(shù) a b c, c為精度, 計(jì)算a/b, 精度可達(dá)1000。a, b <= 10^6
分析: 因?yàn)榫群芨? 直接適用整數(shù)計(jì)算會導(dǎo)致溢出。所以選用字符串結(jié)構(gòu)進(jìn)行存儲。計(jì)算的時候再進(jìn)行轉(zhuǎn)換。
// 分?jǐn)?shù)化小數(shù)
// 高精度分?jǐn)?shù)化小數(shù)
// 給出三個整數(shù) a b c, c為精度, 計(jì)算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);
}
}