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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言浮点型数据能不能取余?相关的知识,希望对你有一定的参考价值。

int a=5,b;
b=a%3;
此时的b为2。然后我想问一下,如果 float a=5.2; 那 a%3为多少?

还有,一个浮点型的数据如何才能得到其各位,十位,百位上的值?先把它强制转换成int型,然后取余 % ,这样行不行?

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 

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

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

参考技术A

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

参考技术B a%3非法,取余要求两个都是整型
int转换后是可以的本回答被提问者采纳
参考技术C 可以先强制转化后取余。不能直接取余。 参考技术D 浮点型数据不可取余数

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

单片机C语言中如何将浮点型变量转换成字符串输出

我想用单片机写一个计算器,用1602显示,但是怎样才能将运算结果换算成字符串输出呢?
但是计算的结果应该是一个变量啊,不能用具体的数字做解 ,应该可以做的跟家简单的 啊
sprintf()怎么实现可以具体一点吗?

参考技术A 得出的值先保存到一个变量中 如结果为a= 4.234 如果要保留两位小数的话
unsigned int a=4.234*100;
unsigned char s[5];
s[0]=a/100+0x30;
s[1]='.'
s[1]=a%100/10+0x30;
s[2]=a%10+0x30;本回答被提问者采纳
参考技术B 计算的结果(小数)比如0.33 依次显示‘0’‘.’‘3’‘3’不就行了。 参考技术C 用sprinft()
函数实现
参考技术D 建立表格,查表输出

以上是关于C语言浮点型数据能不能取余?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中单精度和双精度浮点型数据的数值范围是多少?怎么算出来的?请大虾帮忙了!

单片机C语言中如何将浮点型变量转换成字符串输出

精度浮点型数据精确到了几位小数呢?

c语言中将一个浮点型赋值给整型时,会不会四舍五入?

C语言的浮点型怎么转换为整型?

怎么将c语言中一个浮点型数据的整数部分与小数部分提取出来