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日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理