C语言浮点型数据不能取余。
一个浮点型的数据,转化成整形数据后可以通过除法与取余来获得其个位、十位、百位。先把它强制转换成int型,然后取余 %是可行的。
例如浮点型数据521.63,转化成整形后是521,对10取余可以获取个位数1,对100取余再除以10取整可以获得十位数2,除以100取整可以获得百位数5。
扩展资料:
取余运算的运算律:
1、(a + b) % p = (a % p + b % p) % p
2、(a - b) % p = (a % p - b % p) % p
3、(a * b) % p = (a % p * b % p) % p
4、a ^ b % p = ((a % p)^b) % p
5、((a+b) % p + c) % p = (a + (b+c) % p) % p (5)
6、((a*b) % p * c)% p = (a * (b*c) % p) % p (6)
7、(a + b) % p = (b+a) % p
8、(a * b) % p = (b * a) % p
9、(a+b) % p = ( a % p + b % p ) % p
10、((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p
参考资料来源:百度百科-浮点型数据
参考资料来源:百度百科-取模运算
可以,但不能用操作符%,而要用库函数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。
a%3非法,取余要求两个都是整型
int转换后是可以的
可以先强制转化后取余。不能直接取余。
浮点型数据不可取余数
你的思路是对的,可以实现.