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

C语言中long int除法结果小数部分被截断问题求助

解决C语言除法小数被截断的问题

你的问题出在整数除法的特性上:当两个整数类型的操作数进行除法运算时,C语言会执行整数除法,直接舍弃小数部分,只保留商的整数部分。你的代码里a / 7中,a是long int类型,7是int类型,两者都是整数,所以计算结果会先被截断成整数,再转换为float赋值给b,自然看不到小数部分。

要得到带小数的结果,只需要让除法运算变成浮点除法,只需把其中一个操作数转换为浮点类型即可,有两种常用方式:

方法1:将整数变量强制转换为浮点类型

#include <stdio.h>

int main() {
    long int a = 120510380;
    float b;
    b = (float)a / 7;  // 强制转换a为float,触发浮点除法
    printf("%f", b);
    return 0; 
}

方法2:使用浮点类型的字面量作为除数

#include <stdio.h>

int main() {
    long int a = 120510380;
    float b;
    b = a / 7.0f;  // 7.0f是float类型字面量,触发浮点除法
    printf("%f", b);
    return 0; 
}

运行修改后的代码,就能得到包含小数部分的近似结果:17215768.000000(实际精确值为120510380÷7=17215768.5714...,但float的精度有限,会做近似表示)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:00:58