0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享在arduino 單片機(jī)中浮點(diǎn)數(shù)轉(zhuǎn)換位數(shù)不夠,精度丟失的解決辦法

李智勇06 ? 來源:李智勇06 ? 作者:李智勇06 ? 2024-08-27 14:34 ? 次閱讀

String NEMA2WGS84(String ddmmStr) { //保留7位,由于單片機(jī)限制,必須放大到整數(shù)處理,否則小數(shù)點(diǎn)后面位數(shù)只有2位,不能直接用字符串轉(zhuǎn)雙精度函數(shù)

int ind1 = ddmmStr.indexOf(".");

int dot = ddmmStr.length() - ind1 - 1; //找到原來小數(shù)點(diǎn)位置,轉(zhuǎn)換10的冪次方

ddmmStr.replace(".", ""); //轉(zhuǎn)換到整數(shù)

String dd = ddmmStr.substring(0, ind1 - 2); //取出度整數(shù)部分

String mm = ddmmStr.substring(ind1 - 2, ddmmStr.length()); //分

int degrees = dd.toInt();

double minutes = mm.toDouble() / (60); //轉(zhuǎn)換到分鐘

double dotl = 1 / powl(10, dot); //縮小位數(shù)

double res = (double)degrees + minutes * dotl; //把整數(shù)在轉(zhuǎn)換回小數(shù)

// Serial.println(res, 7);

return String(res, 7);

}

以上是我經(jīng)過實(shí)際測試通過對,如果直接轉(zhuǎn)換只有兩位小數(shù),現(xiàn)在已經(jīng)可以到7位精度。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635212
  • 浮點(diǎn)數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    15869
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187053
收藏 人收藏

    評論

    相關(guān)推薦

    labview和單片機(jī)通訊浮點(diǎn)數(shù)如何處理?

    通過labview和下位機(jī)單片機(jī)通過串口通訊,對于浮點(diǎn)數(shù),如果上位機(jī)要把浮點(diǎn)數(shù)傳給下位機(jī) 或者下位機(jī)
    發(fā)表于 06-06 21:05

    單片機(jī)讀取浮點(diǎn)數(shù)

    單片機(jī),把某個(gè)浮點(diǎn)數(shù)保存在指定的四個(gè)單元后,怎么讀取出來呢?比如,把浮點(diǎn)數(shù)float a=233.45按字節(jié)保存在0x0400,0x0401,0x0402,0x0403后,怎么把它讀
    發(fā)表于 01-11 09:20

    單片機(jī)浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制,串口接收浮點(diǎn)數(shù)處理

    num.f=6.0時(shí),另一個(gè)成員變量也改變num.m=40C00000因?yàn)?單片機(jī)的十進(jìn)制和十六進(jìn)制都可以進(jìn)行直接計(jì)算,所以用以上辦法就可以實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)十六進(jìn)制.通俗的講:共用體就像一個(gè)容器,成員變量就是
    發(fā)表于 07-18 14:57

    單片機(jī)顯示浮點(diǎn)數(shù)的相關(guān)資料下載

    ?使用單片機(jī)顯示浮點(diǎn)型數(shù)據(jù)時(shí),因?yàn)橐@示小數(shù)點(diǎn),有時(shí)還要顯示負(fù)號,而且整數(shù)部分位數(shù)還經(jīng)常是不確定的。這時(shí)我們就需要一種有效快捷的顯示方法。如下:#include "
    發(fā)表于 11-22 08:23

    浮點(diǎn)數(shù)單片機(jī)數(shù)據(jù)采集監(jiān)控系統(tǒng)的應(yīng)用

    單片機(jī)能夠直接處理的數(shù)是定點(diǎn)數(shù),然而實(shí)際上需要輸入、處理和顯示的數(shù)據(jù)卻是浮點(diǎn)數(shù),本文詳細(xì)介紹了浮點(diǎn)數(shù)
    發(fā)表于 08-13 15:38 ?44次下載

    PIC單片機(jī)浮點(diǎn)數(shù)格式及其與十進(jìn)制數(shù)之間的轉(zhuǎn)換和程序設(shè)計(jì)步驟

    我們設(shè)計(jì)的儀表采用PIC系列單片機(jī),碰到了浮點(diǎn)數(shù)的運(yùn)算問題,查閱其有關(guān)資料發(fā)現(xiàn),其浮點(diǎn)數(shù)的格式及其與十進(jìn)制數(shù)之間的
    發(fā)表于 08-05 17:39 ?1971次閱讀
    PIC<b class='flag-5'>單片機(jī)</b><b class='flag-5'>浮點(diǎn)數(shù)</b>格式及其與十進(jìn)制數(shù)之間的<b class='flag-5'>轉(zhuǎn)換</b>和程序設(shè)計(jì)步驟

    單片機(jī)浮點(diǎn)數(shù)的快速除法

    介紹一種 8096 /96 系列單片機(jī)上實(shí)現(xiàn)的單精度 浮點(diǎn)數(shù) 快速除法。該算法采用了預(yù)估一修正的數(shù)值計(jì)算方法,并充分利用了16 位CPU
    發(fā)表于 06-03 16:47 ?93次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>浮點(diǎn)數(shù)</b>的快速除法

    單片機(jī)浮點(diǎn)數(shù)運(yùn)算的源碼設(shè)計(jì)

    單片機(jī)執(zhí)行程序的過程,實(shí)際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。本文詳細(xì)介紹了浮點(diǎn)數(shù)單片機(jī)的表示方式和匯編子程序,
    的頭像 發(fā)表于 03-07 15:19 ?1w次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>浮點(diǎn)數(shù)</b>運(yùn)算的源碼設(shè)計(jì)

    單片機(jī)的16進(jìn)制如何與浮點(diǎn)數(shù)進(jìn)行互換

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)的16進(jìn)制如何與浮點(diǎn)數(shù)進(jìn)行互換
    發(fā)表于 08-06 17:34 ?7次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>中</b>的16進(jìn)制如何與<b class='flag-5'>浮點(diǎn)數(shù)</b>進(jìn)行互換

    單片機(jī)浮點(diǎn)數(shù)轉(zhuǎn)換成串口可打印格式的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)浮點(diǎn)數(shù)轉(zhuǎn)換成串口可打印格式的程序免費(fèi)下載。
    發(fā)表于 07-16 17:39 ?3次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>中</b>的<b class='flag-5'>浮點(diǎn)數(shù)</b><b class='flag-5'>轉(zhuǎn)換</b>成串口可打印格式的程序免費(fèi)下載

    單片機(jī)顯示浮點(diǎn)數(shù)

    ? 使用單片機(jī)顯示浮點(diǎn)型數(shù)據(jù)時(shí),因?yàn)橐@示小數(shù)點(diǎn),有時(shí)還要顯示負(fù)號,而且整數(shù)部分位數(shù)還經(jīng)常是不確定的。這時(shí)我們就需要一種有效快捷的顯示方法。如下:#include "
    發(fā)表于 11-13 14:06 ?24次下載
    <b class='flag-5'>單片機(jī)</b>顯示<b class='flag-5'>浮點(diǎn)數(shù)</b>

    FLASH存儲(chǔ)浮點(diǎn)數(shù)據(jù)的解決辦法

    需求: 參數(shù)的數(shù)據(jù)類型為浮點(diǎn)數(shù)據(jù),需要存儲(chǔ)至FLASH。解決辦法:采用聯(lián)合體聯(lián)合體特性:聯(lián)合體內(nèi)的參數(shù),共用一塊內(nèi)存。案例://構(gòu)建聯(lián)合體數(shù)據(jù)結(jié)構(gòu)typedef union{ float
    發(fā)表于 12-02 12:21 ?6次下載
    FLASH存儲(chǔ)<b class='flag-5'>浮點(diǎn)數(shù)</b>據(jù)的<b class='flag-5'>解決辦法</b>

    點(diǎn)數(shù)浮點(diǎn)數(shù)STM32單片機(jī)中使用傅里葉(FFT)變換的理解

    點(diǎn)數(shù)浮點(diǎn)數(shù)的區(qū)別目的:理解定點(diǎn)數(shù)浮點(diǎn)數(shù)傅里葉變換(FFT)的實(shí)際應(yīng)用的選擇
    發(fā)表于 12-24 19:22 ?16次下載
    定<b class='flag-5'>點(diǎn)數(shù)</b>和<b class='flag-5'>浮點(diǎn)數(shù)</b><b class='flag-5'>在</b>STM32<b class='flag-5'>單片機(jī)</b>中使用傅里葉(FFT)變換的理解

    精度和雙精度浮點(diǎn)數(shù)的區(qū)別

    計(jì)算機(jī)科學(xué)和數(shù)值計(jì)算,浮點(diǎn)數(shù)是一種用于表示實(shí)數(shù)的數(shù)據(jù)類型。浮點(diǎn)數(shù)有兩種精度級別:單精度和雙
    的頭像 發(fā)表于 12-13 10:55 ?1.1w次閱讀

    精度和雙精度浮點(diǎn)數(shù)的區(qū)別

    精度和雙精度是計(jì)算機(jī)中表示浮點(diǎn)數(shù)的兩種不同的精度計(jì)算機(jī),
    的頭像 發(fā)表于 12-15 10:25 ?5455次閱讀