sherlock_t 2016-11-18 13:40 采纳率: 0%
浏览 2470

C;想输出小数点后30位,但是后几位精度达不到,怎么回事?

long double a[360][180][38][19];

fscanf__s(fp,"lf"&a[0][0][0][0]);_

printf("a[%d][%d][%d][%d] = %31.30f\n",i,j,k,p,a[i][j][k][p]);

源数据:1.1111111111111111111111111111111
输出结果:1.11111111111111111111000000000

这是个什么情况?

  • 写回答

2条回答

  • MMomega 2016-11-18 14:15
    关注

    double64位中,1位符号位,11位指数位,52位尾数位。
    double尾数占52位,2^-52=2.2204460492503130808472633361816e-16,即2^-16,所以能够保证所有的15位精度。

    评论

报告相同问题?

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器