㈠ 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头文件。
㈡ c语言中,怎样使用取余数的函数
C语言提供了一个取余数的运算符%,称之为“模”运算符,只有两个整数之间才可以进行模运算。
a % b 表示 用b来整除a,商整数,得到余数。
如:
5%3 = 2
4%3 =1
3%3 =0
(2)c语言double类型不能取余扩展阅读:
数学函数
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回x^y的值
doublepow10(int p) 返回10^p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度
double atan(double x) 返回x的反正切tan-1(x)值,x为弧度
double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数
double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数
char *ecvt(double value,int ndigit,int *decpt,int *sign),将浮点数value转换成字符串并返回该字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign),将浮点数value转换成字符串并返回该字符串
㈢ double数据类型能不能取余运算
给你看一个,使用高精度出发来解决mod运算。。你可以先把数存到字符串里,作为参数计算。
#include
"iostream.h"
#include
"stdio.h"
#include
"string.h"
int
mod1(char
*a1,int
b)
{
int
a[5000]
=
{0};
int
c[5000]
=
{0};
int
i,
k,
d;
k
=
strlen(a1);
for(i
=
0;
i
<
k;
i++)
a[i]
=
a1[k
-
i
-
1]
-
'0';
d
=
0;
for(i
=
k
-
1;
i
>=
0
;
i--)
{
d
=
d
*
10
+
a[i];
c[i]
=
d
/
b;
d
=
d
%
b;
}
//c[1000]存放着商
while(c[k
-
1]
==
0
&&
k
>
1)
k--;
printf("商=");
for(i
=
k
-
1;
i
>=
0;
i--)
printf("%d",
c[i]);
printf("\n余数=%d",
d);
if
(d==0)
{
return
true;
}
else
return
false;
}
int
main()
{
mod1("123456789456123",10);
cout<<endl;
mod1("12",5);
return
0;
}
㈣ C语言编程 怎么对两个大整数进行求余啊
两个
int
型数据可以用%取余
两个
double
型小数,乘以相应的倍数转成整形,取余,再除以相应的倍数,转为double型
两个double型大整数(int型放不下),可以自己编写。先判断两数大小,用大数不断减小数,直到差小于小数,此时差就是余数。当两数差距较大(如10倍以上),可以一开始直接减小数的10倍加快速度,具体方法你自己想一想吧
㈤ c语言出错invalid operands to binary %
double类型不能使用%操作符作取余运算。浮点数没有%运算符,%只能运用于整数。
双精度浮点型,此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,是doublefloat数据类型,C/C++中表示实型变量的一种变量类型。
(5)c语言double类型不能取余扩展阅读:
C语言中,双精度浮点(double)型,占8个字节(64位)内存空间。其数值范围为-1.7E308~1.7E+308,双精度完全保证的有效数字最高是15位。
浮点型从狭义上说就是科学记数法。双精度,即double。double有二,两个的意思。
C标准要求float类型精度7位,并且整数部分的表示范围至少要达到-1.0E37--1.0E+37。float一般是32位的。
C标准规定double类型的整数部分的最小表示范围和float一样,都是-1.0E37到1.0E+37,但是它要求double类型精度15位~16位。double通常是64位的。输出doublefloat类型的控制符为%lf。
变量定义时,可以简写为double。
longdouble
C还提供了longdouble类型,目的是提供一种比double更加精确的类型。然而,C标准仅仅规定longdouble至少要和double一样精确。
㈥ c语言,取余错误
只有整数存在余数吧。。。。
2.1是 double类型 不允许的 说
首先 i没有值
其次 i不能%2.1,
2.1不是整数
㈦ 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。
㈧ C语言中: 求余符号对应的必须是int型函数吗 pow()函数对应的一般是double吗
%是整数取余数,后面是double类型的小数怎么取余数,小数的除法哪里来的余数;你可以用n % (int) pow(10,c) , 就是将后面的强制类型转换,只要c不大,应该没有问题