标题: 单片机C语言程序如何保存运算过程中的小数位 [打印本页]

作者: wangwing    时间: 2019-5-9 15:13
标题: 单片机C语言程序如何保存运算过程中的小数位
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;

作者: 天风情    时间: 2019-5-9 17:32
你这个没有报错吗?B的值超出了uchar的范围,而且结果X的数据类型是uchar,怎么会得到小数呢
作者: king_zxt    时间: 2019-5-9 17:53
X应为浮点类型,float X=((float)A/B*1000+5)/10
作者: 郑汉松    时间: 2019-5-10 00:48
先打好c语言基础吧,uchar型数据最大只能255,想保留小数点必须用double或float型数据,还有两个整形数据相除会自动舍去小数
作者: stephanie_han    时间: 2019-5-10 16:26
/得到的结果应该是商的整数位吧 想要得到预期的结果应该要改变X的数据类型 或者你加一个强制类型转换 然后想四舍五入的话可以在末位加上0.005再用符号控制取2位小数




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1