<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        單片機C語言快速精度除法方案

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年03月10日   【字體:

        目前的51單片機在進行帶小數點結果的除法一般可以采用浮點數計算的方式,但是浮點數計算有一個缺點就是非常耗時,在對時間要求嚴格的工況就不太適用。
        筆者的工作室長期承接單片機、電路、機電液、工控、自動化、計算機軟件等項目,最近做了個單片機計算器的設計,在設計除法時利用長整形除法和取余運算,可以得到若干小數位的精度運算,與大家共享。
        設計思路如下:
        假設長整形除數a, 長整形被數b,步驟如下:
        <1>得到除法的整數部分,c=a/b;
        <2>設d為a%b,e=10*d,
        得到除法的第一位小數,f=e/b;
        (要點:將a余b的余數乘以10倍,再和被除數b相除,就得到小數點后一位小數)
        <3>設g為e%b,h=10*g,
        得到除法的第二位小數,i=h/b;
        以此類推,可以得到除法的任意小數……
        /**********************************下面附上C語言程序
        **********************************************************/
        unsigned long result, result_p;//表示除法結果的整數和小數部分
        // result_p是小數部分,例如result_p=12345678,表示0.12345678
        Void chufa(unsigned long chushu, unsigned long beichushu, unsigned char wei)
        // wei表示精確到小數點后多少位
        { unsigned char i;
        unsigned long tmp;
        result=result_p=0;
        if (beichushu!=0)//被除數必須不為0
        {
        if (wei==0)
        {result=chushu/beichushu;//計算整數部分
        result_p=0;
        }
        else
        {result=chushu/beichushu;//計算整數部分
        tmp=chushu%beichushu;
        for (i=1;i<=wei;i++)//計算小數部分
        {tmp=tmp*10;
        result_p=result_p*10+tmp/beichushu;
        tmp=tmp%beichushu;
        }
        }
        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮