標(biāo)題:
幫我看看C語(yǔ)言代碼計(jì)算總是錯(cuò)誤
[打印本頁(yè)]
作者:
weiwei850113
時(shí)間:
2022-4-23 19:03
標(biāo)題:
幫我看看C語(yǔ)言代碼計(jì)算總是錯(cuò)誤
用如下公式計(jì)算出來(lái)的數(shù)據(jù) 顯示總是不能顯示出小數(shù)點(diǎn)第三位
有點(diǎn)抓狂~~~
unsigned int t3;
t3= interData[0]*1000/interData[1]; //數(shù)據(jù)A/數(shù)據(jù)B 同一濃度比值是固定的
if(interData[1]==0) //避免0/0
{
t3=0;
}
NO3Perc[0]=0x30+t3/1000; //顯示t3數(shù)據(jù)
NO3Perc[1]=0x30+t3/100%10;
NO3Perc[2]=0x30+t3/10%10;
NO3Perc[3]=0x30+t3%10;
NO3Perc[4]=0;
作者:
weiwei850113
時(shí)間:
2022-4-23 19:54
說(shuō)一下*100可以顯示 ,*1000就不顯示了 要么顯示1000
作者:
weiwei850113
時(shí)間:
2022-4-23 19:54
*100可以顯示 。*1000就不行了
作者:
Hephaestus
時(shí)間:
2022-4-23 20:05
最后一句應(yīng)該是NO3Perc[4]=0x30;
作者:
weiwei850113
時(shí)間:
2022-4-23 20:09
=0可以的,問題是放大一百倍可以輸出,放大1000倍就有問題
作者:
周翔宇
時(shí)間:
2022-4-24 00:04
放大1000,變量溢出了。最大65535,你把int換成long
作者:
vimli
時(shí)間:
2022-4-24 06:46
首先不論怎樣,你的代碼邏輯是有問題的,一般先做參數(shù)檢查再做數(shù)據(jù)處理的,還有就是實(shí)際MCU的數(shù)據(jù)變量保證運(yùn)算不溢出
作者:
vimli
時(shí)間:
2022-4-24 07:05
增加一個(gè)中間變量temp,代碼邏輯會(huì)清晰些
//顯示t3數(shù)據(jù)
temp = t3/1000;
NO3Perc[0]=0x30+temp ; //千位數(shù)
temp = t3%1000;
NO3Perc[1]=0x30+temp /100;//百位數(shù)
temp = t3%100;
NO3Perc[2]=0x30+temp /10;//十位數(shù)
temp = t3%10;
NO3Perc[3]=0x30+temp ;//個(gè)位數(shù)
NO3Perc[4]=0;
作者:
wulin
時(shí)間:
2022-4-24 09:04
t3=(long)interData[0]*1000/interData[1];
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1