当前位置:首页 » 编程语言 » c语言float求余
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言float求余

发布时间: 2022-01-29 16:23:50

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就已经不能通过.