我真的不知道如何解释这个(这就是为什么标题要模糊),但我需要一种方式来使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