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
相关产品推荐
相关产品推荐

