找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4479|回复: 4
收起左侧

单片机C语言程序如何保存运算过程中的小数位

[复制链接]
ID:483407 发表于 2019-5-9 15:13 | 显示全部楼层 |阅读模式
uint A;
uchar B,X;
A=2861;B=967;

X=A/B;  //结果为2.959,现在我要保存并显示这个结果为2.96,用下面的处理方法同,为什么不可以?

A=2861;
B=967;
X=(A/B*1000+5)/10;
回复

使用道具 举报

ID:426861 发表于 2019-5-9 17:32 | 显示全部楼层
你这个没有报错吗?B的值超出了uchar的范围,而且结果X的数据类型是uchar,怎么会得到小数呢
回复

使用道具 举报

ID:198530 发表于 2019-5-9 17:53 | 显示全部楼层
X应为浮点类型,float X=((float)A/B*1000+5)/10
回复

使用道具 举报

ID:514901 发表于 2019-5-10 00:48 | 显示全部楼层
先打好c语言基础吧,uchar型数据最大只能255,想保留小数点必须用double或float型数据,还有两个整形数据相除会自动舍去小数
回复

使用道具 举报

ID:532564 发表于 2019-5-10 16:26 | 显示全部楼层
/得到的结果应该是商的整数位吧 想要得到预期的结果应该要改变X的数据类型 或者你加一个强制类型转换 然后想四舍五入的话可以在末位加上0.005再用符号控制取2位小数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表