free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問答首頁 最新問題 熱門問題 等待回答標(biāo)簽廣場
我要提問

單片機(jī)

51單片機(jī)的問題

unsigned char dat[5]={ 2,4,3,5,6};

int x;

double d;

(第一種)

x = dat[0]*10000+dat[1]*1000+dat[2]*100+dat[3]*10+dat[4];

d = x/1000;

得到 d=24.300 (省略了小數(shù)后兩位)

(第二種)

d = dat[0]*10+dat[1]+dat[2]*0.1+dat[3]*0.01+dat[4]*0.001;

得到 d=24.356 (正確)

不知道是怎么回事??

提問者:chenliang513 地點:- 瀏覽次數(shù):8133 提問時間:10-22 17:34
我有更好的答案
提 交
4條回答
LDF7803 08-29 15:24
這個應(yīng)該是跟編譯器生成的乘除法代碼有關(guān),而跟單片機(jī)無關(guān)吧
kaishengdianzi 08-24 00:37


這個跟運(yùn)算時的數(shù)制轉(zhuǎn)換有關(guān),第二個因為后面你用的是0.1??0.01等數(shù),是浮點型數(shù)據(jù),因此計算時全部轉(zhuǎn)換為浮點型計算,不會丟掉位數(shù)。第一個都是整型,計算時是用整型數(shù)據(jù)計算的,特別是第二步 x/1000這個算式,數(shù)據(jù)就是在這里丟掉的??梢愿某?x/1000.0 試試看,應(yīng)該就不會丟了。或者你的 x 也定義成double型。
mvueurtwd 08-31 03:10
你的x是int類型,他是整數(shù)類型定義,不可能有小數(shù)位的。你改成double或者float就OK了,int只分配2個字節(jié)都存儲整型,double他會另分配兩個字節(jié)存儲為小數(shù)位。你可以自己看看單片機(jī)的數(shù)據(jù)類型相關(guān)的。
后天天后 08-26 10:14
你的dat[5]定義成unsigned char,還dat[0]*10000,不出錯才怪。
撰寫答案
提 交
1 / 3
1 / 3
相關(guān)單片機(jī)
具有音調(diào)控制的單片機(jī)立體聲前置放大器
用于單片機(jī)與電子裝置中的開關(guān)電源
單片機(jī)軟硬件復(fù)位的條件都有啥
電動機(jī)的單片機(jī)控制
單片機(jī)應(yīng)用系統(tǒng)開發(fā)實例導(dǎo)航