프로그래밍

Degree 관련 각종 Convert 함수들

준이바라기얍 2021. 12. 3. 15:41
반응형

Degree 관련 각종 Convert 함수들

 public static string DegreeToDMS(double d)
        {
            double integer = Math.Truncate(d);             double remainder = Math.Round((d - integer), 7); 
            double min = Math.Truncate((remainder * 60));             double sec = Math.Round((remainder - (min / 60)) * 3600, 1); 
            if (sec == 0)
            {
                return string.Format("{0:00}:{1:00}.{2:000}", integer, min, sec);
          
            
            }
         

            return string.Format("{0:00}:{1:00}.{2:000}", integer, min, int.Parse(sec.ToString().Replace(".", "")));         }
                                                public static string DegreeToDMS(double d, bool type)
        {
            double integer = Math.Truncate(d);             double remainder = Math.Round((d - integer), 7); 
            double min = Math.Truncate((remainder * 60));             double sec = Math.Round((remainder - (min / 60)) * 3600, 1); 


            if (type)             {
                if (sec == 0)
                {
                    return string.Format("{0:00}:{1:00}.{2:000}", integer, min, sec);
                }
                return string.Format("{0:00}:{1:00}.{2:000}", integer, min, int.Parse(sec.ToString().Replace(".", "")));             }
            else             {
                if (sec == 0)
                {
                    return string.Format("{0:000}:{1:00}.{2:000}", integer, min, sec);
                }
                return string.Format("{0:000}:{1:00}.{2:000}", integer, min, int.Parse(sec.ToString().Replace(".", "")));             }
        }
                                                public static string DegreeToDMSwithSignSuffix(double d, bool type)
        {
                        bool isNegativeNum = false;
            string suffix = string.Empty;
            if (d < 0)
            {
                d *= -1;
                isNegativeNum = true;
            }

            double integer = Math.Truncate(d);             double remainder = Math.Round((d - integer), 7); 
            double min = Math.Truncate((remainder * 60));             double sec = Math.Round((remainder - (min / 60)) * 3600, 1); 


            if (type)             {
                                if (isNegativeNum)
                    suffix = "S";
                else
                    suffix = "N";

                if (sec == 0)
                {
                   
                    return string.Format("{0:00}:{1:00}.{2:000} {3}", integer, min, sec, suffix);
                }
              
                return string.Format("{0:00}:{1:00}.{2:000} {3}", integer, min, int.Parse(sec.ToString().Replace(".", "")), suffix);             }
            else             {
                                if (isNegativeNum)
                    suffix = "W";
                else
                    suffix = "E";

                if (sec == 0)
                {
                
                    return string.Format("{0:000}:{1:00}.{2:000} {3}", integer, min, sec, suffix);
                }
             
                return string.Format("{0:000}:{1:00}.{2:000} {3}", integer, min, int.Parse(sec.ToString().Replace(".", "")), suffix);             }
        }
반응형