(C语言)整型变量相除,结果为整数;以及如何获得正确的小数结果

遭遇的问题

在学习时有一个课后题要求计算两个变量的加减乘除以及取余,想到除法可能会计算出小数,就用浮点型接收除法的结果

int a,b;
double div;
div = a / b;

但是算出来的结果却不对

解决办法

问题在于

C语言中,两个同类型的变量做运算得出的结果还是该类型的

而两个不同类型的变量做运算会先将精度较低的变量提升到精度较高的变量的类型,再做运算

所以上面a与b做运算后的结果还是int类型,之后这个结果自动提升为double类型并赋给div

int a = 5,b = 2;
double div;
div = a / b;

上面div = a / b;的运算过程是:

5 / 2 --> 2 两个int型做运算,结果还是int型,除不尽的部分(小数点)被舍弃了
2 --> 2.0int型变量赋给double类型,int型被自动提升为double类型
div = 2.0double类型的数赋给double类型的变量,没有问题

解决办法:
再运算前先将一个变量转换为double类型,即:

int a = 5,b = 2
double div;
div = (double)a / b;

上面div = a / b;的运算过程是:

5 / 2 --> 5.0 / 2 int型被转换为double类型
5.0 / 2 --> 5.0 / 2.0 double类型和int型做运算,double类型精度更高,
int型的算数被转化为double类型
5.0 / 2.0 --> 2.5 两个double类型进行运算,结果还为double类型
div = 2.5; 将double类型的数赋给double类型的变量,没有问题
posted @   Kazuma_124  阅读(445)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示