我真的不知道如何解釋這個(這就是爲什麼標題要模糊),但我需要一種方式來使C以某種方式分割,我需要在沒有任何小數的情況下進行c分割例如答案(除了餘數);C中的分部問題
而不是5.21/.25 = 20.84
我需要這個5.21/.25 = *20* Remainder = *.21*
我發現瞭如何找到與Fmod()
其餘部分,但我怎麼找到20
?
謝謝〜
我真的不知道如何解釋這個(這就是爲什麼標題要模糊),但我需要一種方式來使C以某種方式分割,我需要在沒有任何小數的情況下進行c分割例如答案(除了餘數);C中的分部問題
而不是5.21/.25 = 20.84
我需要這個5.21/.25 = *20* Remainder = *.21*
我發現瞭如何找到與Fmod()
其餘部分,但我怎麼找到20
?
謝謝〜
如何使用隱式轉換?
float k = 5.21/.25;
int n = k;
k -= n;
結果
k = .84
n = 20
只使用整數也將做的工作,如果你不需要,其餘
int k = 5.21/.25
會自動截斷k和得到k = 20
對不起,我忘了提及我是初學者在C編碼,所以如果我犯了任何錯誤,請糾正我,但在這種情況下,我只是放棄'k',而不是使用fmod()來獲得剩餘的權利?而且我會得到餘數= .21和'n = 20'如果是這樣,感謝您的幫助! –
使用double modf(double value, double *iptr)
來提取FP數的整數部分河
modf函數將參數值分解爲整數部分和小數部分,每個部分都與參數具有相同的類型和符號。 C11§7.12.6.122
#include <math.h>
#include <stdio.h>
int main() {
double a = 5.21;
double b = 0.25;
double q = a/b;
double r = fmod(a, b);
printf("quotient: %f\n", q);
printf("remander: %f\n", r);
double ipart;
double fpart = modf(q, &ipart);
printf("quotient i part: %f\n", ipart);
printf("quotient f part: %f\n", fpart);
return 0;
}
輸出
quotient: 20.840000
remander: 0.210000
quotient i part: 20.000000
quotient f part: 0.840000
使用int
是有問題的,由於在有限的範圍,精度和簽名的問題。
嗯,我沒有想到使用int的問題,謝謝! –
@MatthewH在_general_中,很好地減少混合類型,特別是在浮點指針和整數類型之間。 – chux
如果我可以打擾你一分鐘,我怎麼能找到兩個值之間的每一個數字?像 'if(x = 1到10)' 我會用什麼替代? –
將結果存儲在一個'int'中,或使用floor函數。 – Riley
'int'失敗的例子double x = pow(2,32),ip; modf(x,&ip); printf(「%f%f%d \ n」,x,ip,(int)x);' - >'4294967296.000000 4294967296.000000 -2147483648' – chux