標(biāo)題: 加這個(gè)(float)是什么意思,把uint16類型轉(zhuǎn)換成float類型嗎 [打印本頁(yè)]

作者: egsresrhtrhrtst    時(shí)間: 2023-5-10 15:35
標(biāo)題: 加這個(gè)(float)是什么意思,把uint16類型轉(zhuǎn)換成float類型嗎
uint16_t conv_value[6];

voltage[0]=(float)conv_value[0]*3.3/4096;


加這個(gè)(float)是什么意思,把uint16類型轉(zhuǎn)換成float類型嗎

作者: liixaofei5    時(shí)間: 2023-5-10 18:11
(float)把conv_value[0]這個(gè)變量強(qiáng)制轉(zhuǎn)化為float后與后面的3.3等運(yùn)算(由于乘以3.3,已存在float,沒(méi)有這個(gè)(float)也會(huì)這樣做)。但是,右側(cè)結(jié)果賦值給voltage[0]時(shí),會(huì)再次轉(zhuǎn)回voltage[0]自己的類型,本程序段看不到,需要看其定義
作者: Hephaestus    時(shí)間: 2023-5-10 18:31
對(duì)是對(duì),但如果是8位機(jī),float操作占用的系統(tǒng)資源太多了,要盡量避免。
作者: yzwzfyz    時(shí)間: 2023-5-11 15:18
3.3/4096=0.0008056640625。
在內(nèi)存中如果存儲(chǔ)表示呢?用幾個(gè)字節(jié)存儲(chǔ),每個(gè)字節(jié)中寫(xiě)入什么?
這是用FLOAT的原因。
作者: Hephaestus    時(shí)間: 2023-5-11 16:21
3.3/4096完全可以寫(xiě)成80566ul,再做long型運(yùn)算,反正都是顯示給人看的,小數(shù)點(diǎn)打在哪里都太簡(jiǎn)單了,而long型運(yùn)算占用的時(shí)間和消耗的flash空間要比f(wàn)loat少太多太多了。
作者: 涅槃重生1    時(shí)間: 2023-5-11 20:27
這個(gè)是C語(yǔ)言的強(qiáng)制類型轉(zhuǎn)換方法:強(qiáng)制類型轉(zhuǎn)換是通過(guò)類型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為: (類型說(shuō)明符) (表達(dá)式) 其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說(shuō)明符所表示的類型。
作者: coody_sz    時(shí)間: 2023-5-12 11:06
強(qiáng)制類型轉(zhuǎn)換
作者: kk17328    時(shí)間: 2023-5-16 21:51
強(qiáng)轉(zhuǎn)變量類型,防止精度丟失
作者: Longan.Wang    時(shí)間: 2023-5-17 15:25
就是你說(shuō)的那個(gè)意思!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1