标题:
帮我看看C语言代码计算总是错误
[打印本页]
作者:
weiwei850113
时间:
2022-4-23 19:03
标题:
帮我看看C语言代码计算总是错误
用如下公式计算出来的数据 显示总是不能显示出小数点第三位
有点抓狂~~~
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;
作者:
weiwei850113
时间:
2022-4-23 19:54
说一下*100可以显示 ,*1000就不显示了 要么显示1000
作者:
weiwei850113
时间:
2022-4-23 19:54
*100可以显示 。*1000就不行了
作者:
Hephaestus
时间:
2022-4-23 20:05
最后一句应该是NO3Perc[4]=0x30;
作者:
weiwei850113
时间:
2022-4-23 20:09
=0可以的,问题是放大一百倍可以输出,放大1000倍就有问题
作者:
周翔宇
时间:
2022-4-24 00:04
放大1000,变量溢出了。最大65535,你把int换成long
作者:
vimli
时间:
2022-4-24 06:46
首先不论怎样,你的代码逻辑是有问题的,一般先做参数检查再做数据处理的,还有就是实际MCU的数据变量保证运算不溢出
作者:
vimli
时间:
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;
作者:
wulin
时间:
2022-4-24 09:04
t3=(long)interData[0]*1000/interData[1];
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1