日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

度分秒和度的转换

發布時間:2024/8/26 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 度分秒和度的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

輸入的經緯度是118.8000745,轉換為度分秒的格式
計算:度就是118度;
分用小數部分0.8000745*60=48.00447,分就是48分;
秒用分的小數部分0.00447*60=0.2682秒

寫了個QAngle類,頭文件qangle.h

 1 #ifndef QANGLE_H
 2 #define QANGLE_H
 3 
 4 #include <QObject>
 5 
 6 class QAngle : public QObject
 7 {
 8     Q_OBJECT
 9 public:
10     QAngle(QObject *parent);
11     QAngle(double angle);
12     QAngle(int nDegree,    int nMinute,int nSecond);
13     QString getDDMMSS();
14     ~QAngle();
15 private:
16     double dAngle;//dAngle——角度, 單位度(°)
17     int nDegree;
18     int nMinute;
19     int nSecond;
20     void ConvertToAngle();
21     void ConvertToddmmss( int nPrecision);
22 };
23 
24 #endif // QANGLE_H

實現文件qangle.cpp

  1 #include "qangle.h"
  2 
  3 QAngle::QAngle(QObject *parent)
  4     : QObject(parent)
  5 {
  6 
  7 }
  8 QAngle::QAngle(double angle)
  9 {
 10     dAngle=angle;
 11     ConvertToddmmss(3);
 12 }
 13 QAngle::QAngle(int _Degree,    int _Minute,int _Second)
 14 {
 15     nDegree=_Degree;
 16     nMinute=_Minute;
 17     nSecond=_Second;
 18     ConvertToAngle();
 19 }
 20 void QAngle::ConvertToAngle()
 21 {
 22     dAngle=nDegree+nMinute/60+nSecond/3600;
 23 }
 24 QString QAngle::getDDMMSS()
 25 {
 26     QString strDDMMSS;
 27     strDDMMSS.append(QString::number(nDegree));
 28     strDDMMSS.append(QString::fromLocal8Bit("°"));
 29     strDDMMSS.append(QString::number(nMinute));
 30     strDDMMSS.append(tr("'"));
 31     strDDMMSS.append(QString::number(nSecond));
 32     strDDMMSS.append(tr("""));
 33     return strDDMMSS;
 34 }
 35 //nPrecision——精度, 1:度、2:分、3:秒
 36 void QAngle::ConvertToddmmss(int nPrecision)
 37 {
 38     if (1 == nPrecision)    // 度
 39     {
 40         int nDegree = int(dAngle);
 41         if (fabs(dAngle - nDegree) > 0.5)
 42         {
 43             // 四舍五入
 44             nDegree += 1;
 45         }
 46         if (nDegree > 360)
 47         {
 48             nDegree -= 360;
 49         }
 50         //strDimText.Format(_T("%d°"), nDegree);
 51     }
 52     else if (2 == nPrecision) // 分
 53     {
 54         int nDegree = int(dAngle);
 55         int nMinute = int((dAngle - nDegree) * 60);
 56         if (fabs((dAngle - nDegree) * 60 - nMinute) > 0.5)
 57         {
 58             // 四舍五入
 59             nMinute += 1;
 60         }
 61         if (nMinute >= 60)
 62         {
 63             nMinute = 0;
 64             nDegree += 1;
 65         }
 66         if (nDegree > 360)
 67         {
 68             nDegree -= 360;
 69         }
 70         //strDimText.Format(_T("%d°%d'"), nDegree, nMinute);
 71     }
 72     else if (3 == nPrecision)    // 秒
 73     {
 74         nDegree = int(dAngle);
 75         nMinute = int((dAngle - nDegree) * 60);
 76         nSecond = int(((dAngle - nDegree) * 60 - nMinute) * 60);
 77 
 78         if (fabs(((dAngle - nDegree) * 60 - nMinute) * 60 - nSecond) > 0.5)
 79         {
 80             // 四舍五入
 81             nSecond += 1;
 82         }
 83         if (nSecond >= 60)
 84         {
 85             nSecond = 0;
 86             nMinute += 1;
 87         }
 88         if (nMinute >= 60)
 89         {
 90             nMinute = 0;
 91             nDegree += 1;
 92         }
 93         if (nDegree > 360)
 94         {
 95             nDegree -= 360;
 96         }
 97         //strDimText.Format(_T("%d°%d'%d""), nDegree, nMinute, nSecond);
 98     }    
 99 }
100 QAngle::~QAngle()
101 {
102 
103 }

總結

以上是生活随笔為你收集整理的度分秒和度的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。