You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言圆面积计算代码运行输出与预期不符问题求助

问题原因

导致结果不符的核心是浮点精度损失,具体分为两点:

  • 你将radius(半径)和area(面积)都定义为float单精度浮点类型,这类变量的十进制有效数字仅为6~7位,计算过程中会自动截断多余精度,最终输出时就会产生误差。
  • 计算时你定义的PI是double双精度类型,双精度值和单精度的radius计算后得到的结果仍为双精度,赋值给单精度的area时会再次发生精度截断,进一步放大误差。

另外如果需要完全匹配预期的输出格式,还要注意原代码里打印提示语的语句多了换行符\n,会导致提示语输出后自动换行,和预期的连续输出格式不符。

修复方案

把radius和area的类型从float改为double双精度类型,同时对应修改scanf的输入格式符为%lf,再删除提示语后的多余换行符即可,修改后的代码如下:

#include <stdio.h>

int main(void)
{
  const double PI = 3.14159;
  double area, radius;

  printf("Please enter the radius: ");
  // double类型对应的输入格式符为%lf
  scanf("%lf",&radius);

  area = PI * radius * radius;

  printf("The area of the circle is %f\n", area);
  return 0;
}

内容的提问来源于stack exchange,提问作者Michael Cunningham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:54:04