(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.0   将int型变量赋给double类型,int型被自动提升为double类型

div = 2.0   将double类型的数赋给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 @ 2023-09-17 16:36  Kazuma_124  阅读(623)  评论(0)    收藏  举报