1. c语言中float型数能不能和float型数求余
亲,不可以,只有整型才能用求余
2. C语言中求余的运算
printf("%d%%d=%d\n",x,y,n);
改为printf("%d%%%d=%d\n",x,y,n);
因为%号是格式控制符,你两个百分号被当做输出%后面的d接着按字符输出了,就像你想在pintf里面输出\就要用\\
3. C语言中怎样用浮点型求余
由于c中提供的取模(%)是用来求两个整数相除的余数,所以不存在一个整数使用%对浮点数取余数,系统编译不过。要计算一个整数对浮点数取余数,可以使用fmod函数,代码如下,
#include
#include
//输出4对0.3取余的结果
int
main(int
argc,
char
*argv[])
{
printf("%d\n",7%1/2);//由于%和/优先级相同,从左向右执行,7%1为0,0/2为0
printf("%lf\n",fmod(4,0.3));//输出0.100000
return
0;
}
double
fmod(
double
x,
double
y
);函数返回参数x/y的余数,需要添加math.h头文件。
4. C语言 关于求余的一个问题
浮点数求余要用fmod()函数,而不能用%运算符,修改如下:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
float c1=7.2,c2;
c2=fmod(c1,2); /*注意这里*/
printf("%f",c2);
system("pause");
}
//---------------------------------------------------------------------------
5. C语言怎么对浮点型的数求余
这样:
float a=3.14 ,b=3;
int c;
a*=100;
b*=100;
c=(int)a%(int)b;
a=(float)c/100;
%只能用于整形,不能用于浮点,如果浮点定义,必然报错,结果应该是0,不可能是0.14,int=3.14系统默认为3 3%3=0,想得到0.14可以借助系统函数。
(5)c语言float求余扩展阅读:
注意事项
% 只用于整型的计算,后一个数不能是0,参与运算的数据可正可负。
对于x%y ,计算之后结果的正负与 x 的符号相同,如果前者是较小的数,后者是较大的数,那么,结果直接为较小的数。例如:
10%3=1
3%10=3
10%-3=1
-3%10=-3
-10%-3=-1
-3%-10=-3
3%13=3
0%3=0
0%-3=0
3%0 (×)Error!
-3%0 (×)Error!
10.0%3.0 (×)Error! // 浮点型不能进行模运算
6. C语言浮点型数据能不能取余
可以,但不能用操作符%,而要用库函数fmodf、fmod或fmodl。因为%是整型取余操作符,要求两边都是整型数才行,结果也是整型;fmodf用于float型变量操作,fmod用于double型变量操作,fmodl用于long
double型变量操作。以下以fmod举例:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "math.h"
int main(void){
double f=3.3,q=2.2;
printf("%f\n",fmod(f,q));
return 0;
}运行结果是1.100000。
7. 我用C语言写一个计算公式,要求输入FLOAT型,但是要求余数
如bingyan1122所说,小数相除求余数在数学上不存在。如果非要求的话,你看这样行不行。
#include <stdio.h>
main()
{
float a,b;
a=1.5;b=1.2;
printf("%f\n",a-int(a/b)*b);
}
8. c语言求余函数
这涉及到强制转换的问题,但碰到%又行不通了.这里我提供一种方法:
int
main()
{
flout
m,n;
long
s;
s=90657;
m=100000*int((float)s*(float)s/100000);
n=(float)s*(float)s-m
printf("%d",n);
}
注意到了90657已经超过了int型的范围,所以我改了long定义s.
再就是强制转换(float),可把后面跟的变量值转换为相应类型.
最后利用到了求余数的方法.先把a转换为实型,一个数a对另一个数b取余后,余数等于a-b*float(a/b).再把最后的值转化为整型表示即可,若整数部分太大不能转也没关系,因为只是后面多了一些0.
printf("%d",n);
改回为printf("%f",n);
也没关系的.
对于long
的问题,我想说这是计算的问题;90657*90657/100000,计算机得先计算90657*90657,而这已经超出了long的范围.虽然整个值看起来没超过,但90657*90657就已经不能通过.