打印
[STM32F1]

小数转换成分数串口发送

[复制链接]
1271|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
will1024|  楼主 | 2015-11-12 20:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   现在想用串口发送浮点数,先要把小数转换成最简分数,就是不能再约分,并能够判别小数位数, 然后再用串口发送分子分母;  分数转化为小数会了,现在一直不知  小数转化为分数怎么操作。   
   谢谢大家指点!
沙发
will1024|  楼主 | 2015-11-12 20:20 | 只看该作者
小数转分数 部分  程序该怎么编写呢?   求指点迷津

使用特权

评论回复
板凳
734774645| | 2015-11-12 20:27 | 只看该作者
这个简单啊,
比如0.32,你判断小数点后第一个不为0的数字在哪儿
比如这个,你就乘以100,分母就是100
23:100
然后再求最大公约数。就行了

使用特权

评论回复
地板
734774645| | 2015-11-12 20:30 | 只看该作者
#include<stdio.h>
int main()
{
int n,a,b,c;
printf("请输入两个整数(逗号隔开):");
scanf("%d,%d",&a,&b);
n=b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("\n最大公约数是:%d\n",b);
return 0;
}

使用特权

评论回复
5
airwill| | 2015-11-12 21:36 | 只看该作者
上面的方法虽然可行, 但也有问题.  浮点数在计算机里其实也是 16 进制的, 16进制基本求不到几个公约数. 倒是 10进制到16进制的数据转换会损失掉一些精度. 可能需要考虑一点近似计算

使用特权

评论回复
6
457344370| | 2015-11-13 08:11 | 只看该作者
最简单的还是用指针或者共用体,float用4个字节发送可以不损失精度

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝