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

指定float/double却获整数值:圆周长面积计算异常求助

问题描述

我用以下C语言代码计算圆的直径、周长和面积,但结果始终不符合预期。哪怕把float换成double、%f换成%lf,周长和面积还是以xxx.000000的格式输出,就像整数转浮点数的结果。比如半径输入4时,正确面积应该是约50.27,但实际输出是50.000000,求解决办法。

#include <stdio.h>

int diameter_fn(int r)
{
    return (2 * r);
}
void circumference_fn(int r)
{
    float pie = 22 / 7;
    float circum = (2 * pie * r);
    printf(", Circumference = %f", circum);
}
void area_fn(int r)
{
    float pie = 22 / 7;
    float area = (22 * r * r / 7);
    printf(" & the Area = %f", area);
}

int main()
{
    printf("\nName = NAME & UID = UID\n");
    int radius;
    printf("Enter the Radius of Circle:\t\t");
    scanf("%d", &radius);
    printf("\nDiameter = %d", diameter_fn(radius));
    circumference_fn(radius);
    area_fn(radius);
    return 0;
}
问题原因与解决方法
  • 核心问题:整数除法截断
    代码里的22 / 7是两个整数相除,C语言中整数除法会直接截断小数部分,结果是整数3,而非我们需要的近似圆周率3.142857...。不管后续赋值给float还是double变量,截断已经发生,后续计算都基于整数3,结果自然是整数转成的浮点数,出现.000000的情况。

  • 解决步骤

    1. 将整数除法改为浮点数除法:把22 / 7改成22.0 / 7或22 / 7.0,只要其中一个操作数是浮点数,C语言就会按浮点数除法计算,得到正确的圆周率近似值。
    2. 优化面积计算逻辑:原代码22 * r * r / 7存在中间整数运算截断问题(比如半径4时,2244=352,352/7=50,整数除法直接截断小数),改成用浮点数圆周率参与计算,或直接写22.0 * r * r /7,避免截断。
    3. 可选:使用标准库圆周率常量:若追求更高精度,可包含math.h头文件,直接使用M_PI常量(注意部分编译器需开启数学库,如GCC编译时加-lm选项)。
修正后的代码
#include <stdio.h>
// 若使用M_PI,取消下面一行注释
// #include <math.h>

int diameter_fn(int r)
{
    return 2 * r;
}

void circumference_fn(int r)
{
    // 改成浮点数除法,或用M_PI替代22.0/7
    float pie = 22.0 / 7;
    float circum = 2 * pie * r;
    printf(", Circumference = %.2f", circum); // 用%.2f控制小数位数,结果更直观
}

void area_fn(int r)
{
    float pie = 22.0 / 7;
    float area = pie * r * r; // 用pie参与计算,避免整数运算截断
    printf(" & the Area = %.2f", area);
}

int main()
{
    printf("\nName = NAME & UID = UID\n");
    int radius;
    printf("Enter the Radius of Circle:\t\t");
    scanf("%d", &radius);
    printf("\nDiameter = %d", diameter_fn(radius));
    circumference_fn(radius);
    area_fn(radius);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:20:25