㈠ 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不大,應該沒有問題