当前位置:首页 » 编程语言 » 为什么c语言只显示整数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

为什么c语言只显示整数

发布时间: 2022-10-19 03:04:33

c语言中一个整数除以另一个整数结果为什么只取整

因为int 型本身没小数部分,int和int型的数据操作,得到的结果肯定是整数型的,所以小数部分直接去掉了,就算用%f去输出,也不会是正确的结果。

例如:

inta=5,b=3;

floatc;

c=a/b;//输出结果为1.0

c是float型的,按常理c应该等于1.667,但是由于被除数(即变量a)的数据类型为int型,所以在执行完a/b后,运算结果会转换为int型(即舍去小数),故a/b = 1,之后再将取整后的数据(即整数1)转换为float类型(即1.0)赋值给变量c,所以最后c=1.0

(1)为什么c语言只显示整数扩展阅读:

C语言有以下几种取整方法:

1、直接赋值给整数变量。如:

int i = 2.5; 或 i = (int) 2.5;

这种方法采用的是舍去小数部分

2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关。

3、使用floor函数。

floor(x)返回的是小于或等于x的最大整数。如:

floor(2.5) = 2

floor(-2.5) = -3

4、使用ceil函数。

ceil(x)返回的是大于x的最小整数。如:

ceil(2.5) = 3

ceil(-2.5) = -2

floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。

㈡ C语言,printf输出实数时只保留整数可以用%d输出么

通常是不行的
比如:
float a=5.6;
printf("%d",a);这是不行的
但是,如果要,一定要强制转换,上面的形式是不会强制转换的
float a=5.6;
printf("%d",(int)a);这样就行了
float一般占四字节,int一般占2字节,size不同的数是不能乱输的,不然数据丢失是肯定的

㈢ 用C语言做加减乘除除法,为何算除法出来总是整数

虽然f定义为float类型,但a和b都是int型,a/b所得结果为整型,然后在转换为float类型赋给f,所以算出来总是整数,可改为:f=a*1.0/b; 输出float型用%f。

㈣ C语言怎么输出全是整数,就是把分数自动过滤掉!

强制转换变量类型、比如将float类型的数 强制成int型,自动舍去分数部分。
float a=5.7;
int i;
i = (int)a;
printf("%d",i);
输出的是5
还有一种是是用printf控制小数点后位数。
float a=5.7,b=5.4;
printf("%.0f, %.0f",a,b);

输出结果是 6,5
%x.yf的意思

输出的是浮点型,x表示数字所占宽度,y表示小数点后位数,四舍五入。

㈤ C语言平均数只保留了整数怎么办

C语言平均数只保留了整数可以利用C语言的强制转换规则。
C语言规定,当浮点数强制转换为整型类型时,只保留整数部分。
所以对于浮点数,比如float类型a,执行(int)a后的值就是整数部分。
这样当执行a-(int)a时,得到的就是小数部分的值了。
如果该功能经常使用,那么可以定义一个带参数的宏
#defineDECIMAL(X)(x-(int)x)
这样执行DECIMAL(a)得到的值就是t的小数部分。

㈥ C语言如何输出小数 我输出的都是整数 很郁闷

x=(j-100)/2;
改为x=(j-100)/2.0;就可以了

㈦ C语言:规定只能输入正整数,错哪了

要满足你的循环条件,那么输入的就不能是整数,但是这个就出现一个问题,比如你输入一个字母A,由于scanf(“%u”,&num)读到的是非数值的数据,所以它不会把A从缓冲区中取出赋给num,那么A就一直停留在缓冲区中,第二次循环,还是读取A,满足循环条件,所以你的这个就是死循环。
while(scanf("%u",&num)!=1)
{
while(getchar()!='\n'//把缓冲区的字符全部拿走
continue;
printf("拜托……");
}