[STM32F1] 小数转换成分数串口发送

[复制链接]
1481|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;
}
airwill 发表于 2015-11-12 21:36 | 显示全部楼层
上面的方法虽然可行, 但也有问题.  浮点数在计算机里其实也是 16 进制的, 16进制基本求不到几个公约数. 倒是 10进制到16进制的数据转换会损失掉一些精度. 可能需要考虑一点近似计算
457344370 发表于 2015-11-13 08:11 来自手机 | 显示全部楼层
最简单的还是用指针或者共用体,float用4个字节发送可以不损失精度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部