Raptors_DeROZAN 2022-08-07 14:50 采纳率: 75%
浏览 26
已结题

入门c语言对高精度小数计算程序的一个问题

问题

本人在学习c语言时写了一个高精度小数计算程序,要求输出结果要有小数点后200位,我的代码是这样的

img

但是在我输入16/19时,输出的结果却是这样的

img

他只给了我小数点后6位,我不明白自己哪里错了,后来我又在网上找到了正确的代码

img

这条正确的代码输出确实后面带了200位,相比我的代码又简洁又易懂,但是我还是不明白我的代码到底错在哪里了,我又用草稿纸演算了一遍我的代码,依然没有找到正确的答案,恳请各位点出我的错误

自己的代码

#include <stdio.h>
int main() {
int x, y;
scanf_s("%d/%d", &x, &y);
int a;
int i = 0;
double sum = 0;
double c = 0.1;
while (i != 200) {
x *= 10;
a = x / y;
sum += c * a;
c /= 10;
x %= y;
i++;
}
printf("%f", sum);
return 0;
}

  • 写回答

3条回答 默认 最新

  • leoRui_ 2022-08-07 15:23
    关注

    double小数点后有效数字最多就6到7位,就是说你sum最多就只能存储小数点后6位或7位,你把sum的输出放在循环外永远也不会超过7位数字啊,应该在你计算出一个因子的时候就要再循环里面输出它,直到你输出了200个数字

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月7日

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据