关于%f输出精度的试验

    昨晚看到一个帖子是关于精度问题的,摘录如下:

int  n=0;
     float  sn=1;
      int  X;
      int sum=1;
       printf("请输入阶成的次数:");
       while(std::cin>>X)
      for(n=1;n<=X;n++)
     {
         sn=1/fun(n);
         sum=sum+sn;
      
      printf("sn=%.15f\n,sum=%.15f\n",sn,sum);
      }
      return 0;
 
}
double fun(int n)
  {
     if(n==1)
           return 1;
       else
           return
  n=n*fun(n-1);

刚开始用%f输出,他说精度不够,到n=9以后就不变了,我拷入程序后果然如此。然后查阅书籍,发现%f的输出有效数字为7位;用%.15f输出,到n=32时也不发生变化了,才明白flota有效数字6-7位,而double有效数字15-16位。

所以也就不能再精确了。

后来,了解到有用string来处理大数据的,不过还没了解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值