找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4307|回复: 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;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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型数据,还有两个整形数据相除会自动舍去小数
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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