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就已經不能通過.