找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 747|回复: 8
打印 上一主题 下一主题
收起左侧

帮我看看C语言代码计算总是错误

[复制链接]
跳转到指定楼层
楼主
ID:241249 发表于 2022-4-23 19:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用如下公式计算出来的数据 显示总是不能显示出小数点第三位

有点抓狂~~~

        unsigned int t3;

        t3= interData[0]*1000/interData[1];                  //数据A/数据B 同一浓度比值是固定的
        if(interData[1]==0)                                          //避免0/0
        {
        t3=0;        
        }

        NO3Perc[0]=0x30+t3/1000;                         //显示t3数据
        NO3Perc[1]=0x30+t3/100%10;
        NO3Perc[2]=0x30+t3/10%10;
        NO3Perc[3]=0x30+t3%10;
        NO3Perc[4]=0;

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:241249 发表于 2022-4-23 19:54 | 只看该作者
说一下*100可以显示  ,*1000就不显示了 要么显示1000
回复

使用道具 举报

板凳
ID:241249 发表于 2022-4-23 19:54 | 只看该作者
*100可以显示 。*1000就不行了
回复

使用道具 举报

地板
ID:883242 发表于 2022-4-23 20:05 | 只看该作者
最后一句应该是NO3Perc[4]=0x30;
回复

使用道具 举报

5#
ID:241249 发表于 2022-4-23 20:09 | 只看该作者
=0可以的,问题是放大一百倍可以输出,放大1000倍就有问题
回复

使用道具 举报

6#
ID:884739 发表于 2022-4-24 00:04 来自手机 | 只看该作者
放大1000,变量溢出了。最大65535,你把int换成long
回复

使用道具 举报

7#
ID:573999 发表于 2022-4-24 06:46 | 只看该作者
首先不论怎样,你的代码逻辑是有问题的,一般先做参数检查再做数据处理的,还有就是实际MCU的数据变量保证运算不溢出
回复

使用道具 举报

8#
ID:573999 发表于 2022-4-24 07:05 | 只看该作者
       增加一个中间变量temp,代码逻辑会清晰些
       //显示t3数据
        temp = t3/1000;
        NO3Perc[0]=0x30+temp ;  //千位数   
        temp = t3%1000;                  
        NO3Perc[1]=0x30+temp /100;//百位数
         temp = t3%100;
        NO3Perc[2]=0x30+temp /10;//十位数
        temp = t3%10;
        NO3Perc[3]=0x30+temp ;//个位数
        NO3Perc[4]=0;
回复

使用道具 举报

9#
ID:213173 发表于 2022-4-24 09:04 | 只看该作者
t3=(long)interData[0]*1000/interData[1];
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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