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

c语言double类型不能取余

发布时间: 2022-07-30 23:19:09

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不大,应该没有问题