C语言里除法为什么总是除到小数点后的余数?

作者&投稿:岳武 (若有异议请与网页底部的电邮联系)
~

先加减后乘除。

C语言中的加号、减号与数学中的一样,乘号、除号不同;另外C语言还多了一个求余数的运算符,就是 %。

不同类型的除数和被除数会导致不同类型的运算结果:

当除数和被除数都是整数时,运算结果也是整数;如果不能整除,那么就直接丢掉小数部分,只保留整数部分,这跟将小数赋值给整数类型是一个道理。一旦除数和被除数中有一个是小数,那么运算结果也是小数,并且是 double 类型的小数。

扩展资料

取余,也就是求余数,使用的运算符是 %。C语言中的取余运算只能针对整数,也就是说,% 的两边都必须是整数,不能出现小数,否则编译器会报错。

另外,余数可以是正数也可以是负数,由 % 左边的整数决定:

如果 % 左边是正数,那么余数也是正数;

如果 % 左边是负数,那么余数也是负数。




C语言除法运算结果是整数,为何不是小数?
C语言规定除法运算符( \/ )的运算结果的数据类型与被除数的数据类型保存一致,所以一个整数除以另一个整数的结果为整数。举例如下:int a=5, b=3;float c;c = a\/b; \/\/ 输出结果为1.0解释如下:虽然变量c是float型的,按常理c应该等于1.667,但是由于被除数(即变量a)的数据类型为int型,...

c语言中的除法怎么算?
1 C语言中的除用符号 \/ (正斜杠)表示 2 用法 (1)当被除数和除数均为整型时,结果为整型 如1\/2的结果是0,9\/2的结果是4 (2)当被除数和除数任意一个为浮点数时,结果为浮点数 如1.0\/2的结果是0.50000000000000000(double型),9.0\/2.0的结果是4.5000000000000000(double型);1.0F\/2的...

数学中为什么要进行除以运算?
5. **连续性和函数**:在数学分析中,除法是定义函数和研究连续性的关键。例如,函数的导数就是两个函数的商的极限,这涉及到除法运算。6. **几何应用**:在几何学中,除法用于计算面积、体积、角度等的分割和比例。总的来说,除法是数学中的基本运算之一,它帮助我们理解和处理各种数量关系和结构...

c语言中的整数除法取整规则是什么?
c语言除法取整规则为向0取整、向负无穷取整、向正无穷取整、四舍五入取整。1、向0取整 两个整数相除的结果为小数时,其结果是在小数附近并且更靠近0的整数。例如,5\/2=2,10\/3=3,c语言有一个向0取整的库函数:trunc。trunc库函数实参为浮点型返回值类型为浮点型头文件为math.h。2、向负无穷取整...

在C语言中的除法运算,商的符号取决于什么?
就是正常数学运算,作为被除数或除数的变量,两者值的正负性共同决定商的正负性。注意:在c语言中'\/'是整除符号,如果被除数和除数都是整数,那么商就是整数,小于1的话,小数部分会被忽略。这样两个整数做整除,商小于1,无论正负结果都是0。

汇编语言除法之前为什么要加mov dx, 0
因此,在执行 DIV 指令之前,应该加以判断,以免发生溢出。一般来说,当被除数的高位,小于除数时,就不会发生“溢出”。如果高位为零,比如 DX = 0,这就肯定不会溢出。--- 较好的方法是:编写一个“不会溢出”的除法程序。方法思路如下:在右图中,被除数:1A 2B 3C 4DH,有 32 位数。除数...

c语言除法运算
用%这个算符,意思是取余数 比如:a=2;b=3;那么b%a的结果就是3除以2的余数,结果是1;参考程序段:main(){ int i,n;printf("input your number: \\n");scanf("%d",&n);for(i=1;i<n;i++){ if(n%i) continue;printf("%d ",i);} } ...

除法的由来
【除法的由来】:在我国古代,人们很早就掌握了数的除法运算。最早使用是在先秦时期,或更早一些。形成于那个年代的《筭数书》中,关于除法的表示方式共有7类19种,涉及55条。自公元前春秋战国时代之前,我国出现了用“九九”表计算乘法以后,人们也总结了用口诀来计算除法的方法。《孙子算经》上说:...

C语言float类型 的除法为什么会出现误差
随机产生的,float只有前七位是有效数字,你要显示小数点后八位,本来就没有意义!

为什么c语言中有时是\/表示除有时是%表示除
在整形运算里\/是除法求商的,%是除法求余数的。例如123\/10=12,123%10=3。在浮点运算里\/是除法,没有%运算。望采纳。。。

惠来县13199912147: 在C语言中除法运算为什么没有小数部分? -
山查双黄: 1、在C语言中附法是整除运算,比如a/b,表示a中有几个b. 2、示例: 3/2=1 //这是取整运算,即3中有1个2. 3、要保留小数,需要将结果表示成浮点数类型. 示例:(3*1.0)/2=1.5 或者 double result = 3 / 2 ;

惠来县13199912147: c语言实数除法怎样保留小数部分 -
山查双黄: 首先C语言中没有“实数”的定义,但是可以通过定义变量类型和强制类型转换来保留小数部分. 1、定义类型变量,代码如下: #include<string.h> int main() { double a = 7; int b = 2; double c = a / b; printf("c = %f\n", c); return 0; } 2、强制类...

惠来县13199912147: C语言中一个整数除以另一个整数结果为什么只取整? -
山查双黄: 因为int 型本身没小数部分,int和int型的数据操作,得到的结果肯定是整数型的,所以小数部分直接去掉了,就算用%f去输出,也不会是正确的结果. 例如:int a=5, b=3; float c; c = a/b; // 输出结果为1.0 c是float型的,按常理c应该等于1.667,...

惠来县13199912147: C语言中的小数问题,我看到书中有的程序用到除法时,如1.0/2*(a+b+c),分子是精确到小数点后一位 -
山查双黄: C语言中的除法:1. c = a/b;如果a,b都是int型,那么c就取整,舍去小数,比如:c = 6/3 ,那么c=2;而 c=1/4则c=0.因为多数机器采用的是“向零取整”.即 c = -5/3 ,c= -1. 正负数都是向零靠拢的.2. c = a/b;如果a,b中至少有一个是实数型,那么c就精确取值.至于什么时候该精确的问题,得看具体的算法需求.也可以使用强制类型转换来满足算法需求.

惠来县13199912147: C语言里“/”在表示两个数相除时 “向下取整”缺陷解决方案 -
山查双黄: 1. 向上取整问题:如果整除 X/M=N,则 X=N*M + d,其中余数 d 的范围是 [0,M-1]考虑数字 Y = X+(M-1) = (N*M+d) + (M-1) = (N+1)*M + (d-1),很容易发现,当 d>1 时,整除 Y/M=N+1,就是说在 X+(M-1) 实现了向上取整;当d=0时,整除Y/M=N,结果是准确的值.2. 数据类型转换问题:数字后面添加 .f 表示这是一个浮点数,浮点数的运算符 / 是普通的除法,不是整除,得到的结果仍然是浮点数,转换成整数的时候直接把小数点后面的舍去了,不能实现向上取整.3. 向下取整不能说是C的缺陷.否则,反过来,难道默认向上取整就不是缺陷?

惠来县13199912147: 如何完整的编写出c语言中的除法有小数 -
山查双黄: 后面进行除法运算的时候要加.0,否则算出的结果电脑会自动取整~~如:

惠来县13199912147: C语言中的除法怎么区别? -
山查双黄: C语言中和除法相关的运算符有两个"/"整除运算符和"%"取余运算符.整除就是求商,取余就是求余数,这是两者最本质的区别,需要注意的是在C语言%取余运算符只能操作整型数据对象.

惠来县13199912147: C语言 除法 -
山查双黄: #include void main() { printf("%f\n",4.0/16); } 如果是以上这样的话,结果是0.250000 因为float是精确到小数点后6位的.所以在不加限制的情况下是0.25000 如果是 #include void main() { printf("%d\n",4.0/16); } 那么结果是0.因数4除16等于0.25小于1舍去.就变成0了.(在这里C语言没有四舍五入,一律舍!) 不知道是不是你想要的答案?

惠来县13199912147: C语言中如何在除法事结果不保留小数 并将这个结果带入下次运算 -
山查双黄: 要让结果不保留小数,可以进行强制类型转换, 例如 a=3.12,强制转换(int)a=3 想把结果带入下次运算 可以写成 c=b+(int)a; 这样既去了小数也可以把结果带入下次运算了希望回答对你有帮助!【原创答人】

惠来县13199912147: C语言除法问题,关于保留小数的 -
山查双黄: 保留小数点后100位.#include #define N 100 int main() {int a[N],n=2,m=3,k,sum=0; int i=0; printf("请输入被除数n:"); scanf("%d",&n); printf("请输入除数m:"); scanf("%d",&m); k=n%m; sum=n/m; while(i { k*=10; a[i]=k/m; k=k%m; i++; } if(a[99]>=5) a[98]+=1; printf("%d/%d=%d.",n,m,sum); for(i=0;i printf("%d",a[i]); printf("\n"); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网