C语言浮点型数据能不能取余?

2024-12-12 14:21:46
推荐回答(5个)
回答1:

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 

参考资料来源:百度百科-浮点型数据

参考资料来源:百度百科-取模运算

回答2:

可以,但不能用操作符%,而要用库函数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。

回答3:

a%3非法,取余要求两个都是整型
int转换后是可以的

回答4:

可以先强制转化后取余。不能直接取余。

回答5:

浮点型数据不可取余数

你的思路是对的,可以实现.