dsp調試中資料類型自動轉換遇到的問題

來源:互聯網
上載者:User

 

————彭曉林

196568501(qq)歡迎交流

 

問題描述:

void Test(float  Data)
{
 float copyData = Data*1000*1000;
 u64 intCopyData = copyData;
 //查看intCopyData的值
}

main()
{
 test();
}

查看 intCopyData  的值發現 與理論值相差了幾千。把 copyData  改成double也不行。

 

解決方案:

 

   仔細閱讀了dsp編譯器手冊發現編譯器為了提高指令執行速度預設的把float和double類型都設定32為的浮點型(硬浮點),最大支援的浮點數是64位(軟浮點)。

這個C語言標準不一樣。手冊中給了兩種解決方案:

方案一:

通過預先處理選項設定解決。但是改變工程預先處理選項(設為64位)後,串連時出警告,提示說.o檔案中浮點數位寬不一致。仔細分析警告資訊,發現編譯器內建的庫檔案都是按照32位的浮點編譯的。最後我放棄了這種解決方案(畢竟跟老闆辦事,弄出來且弄的快才是硬道理)。

方案二:

編譯器手冊中給出了一張表。把copyData 申明位long double即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.