![]() |
發(fā)布時間: 2024-8-24 08:53
正文摘要:發(fā)現(xiàn)在 FloatToNum(float fs)中數(shù)值還對,在show里面把四位數(shù)碼對應位置賦于數(shù)碼管碼值數(shù)組顯示數(shù)值的,但是數(shù)值就被改了。什么原因?感謝大俠指教!(附代碼),還有我調試時的四張圖。第一張圖是在 FloatToNum(flo ... |
glinfei 發(fā)表于 2024-8-28 10:37 剛剛記錯了,不好意思,好像還真是,不在ASCII范圍就顯示? |
glinfei 發(fā)表于 2024-8-28 10:37 應該不是,你看截圖,上面三個一樣的值就沒有問號。樓主用的DATA,有?,我給改成CODE,也一樣有?的。沒整明白 |
glinfei 發(fā)表于 2024-8-28 10:37 感謝!我測試一下。 |
1.如果值在ASCII范圍,就顯示ASCII,不在就顯示? 2.共陽的管子寫反了,應先關再賦值,否則會重影,估計8字筆畫亮度不同還閃爍。 |
lileisgns 發(fā)表于 2024-8-26 21:00 這個我也不太懂啊,有知道的大神給解惑一下唄 |
xiaobendan001 發(fā)表于 2024-8-26 14:55 DigiValue[uFirst]的值在調試中怎么顯示時帶個‘?’號? 感謝! |
xiaobendan001 發(fā)表于 2024-8-26 14:55 感謝!我用C++寫過軟件 ,現(xiàn)在調試都忘記看數(shù)碼管顯示的取值了。但是我數(shù)碼管顯示的8888.還閃爍。 |
![]() 輸出的結果也都對啊 |
![]() ![]() 模擬中這四個參數(shù)的值并沒有改變啊。 |
xiaobendan001 發(fā)表于 2024-8-24 13:50 后面調用函數(shù)時傳入數(shù)值了。 |
FloatToNum 函數(shù)中的精度問題: 當 fs 值在 10 到 100 之間時,uShu 被計算為 fs * 100,這可能導致精度損失,因為浮點數(shù)乘以 100 并向下取整可能不會得到精確的整數(shù)。 void FloatToNum(float fs) { // 根據(jù)fs的范圍確定乘數(shù) uint multiplier; if (fs >= 100) multiplier = 10; else if (fs >= 10) multiplier = 100; else multiplier = 1000; // 將fs轉換為整數(shù)后乘以相應的乘數(shù) uint temp = (uint)(fs * multiplier); // 四舍五入處理 float remainder = fs - (int)fs; if (remainder >= 0.5f) { temp += 1; } // 計算各個位上的數(shù)值 uFirst = temp / 1000; uSecond = (temp / 100) % 10; uThird = (temp / 10) % 10; uFour = temp % 10; } |
不對,你截圖顯示的就不是一個變量啊,雖然穿進去后不是一個,但是實際上也不會變啊。 |
上面的是全局變量,顯示函數(shù)里面的參數(shù),是局部變量吧。雖然名字一樣,但是應該不是一個。 |
Powered by 單片機教程網(wǎng)