using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp5 { class Program { static void Main(string[] args) { double lat = 38.89861; Console.WriteLine("{0} > {1}", lat, ConvertDoubleToDegreeAngleLat(lat)); double lon = -76.96222; Console.WriteLine("{0} > {1}", lon, ConvertDoubleToDegreeAngleLon(lon)); double degrees; double minutes; double seconds; string dir; Console.WriteLine(); degrees = 38; minutes = 53; seconds = 55.0; dir = "N"; Console.WriteLine("{0} {1} {2} {3} > {4:f5}", degrees, minutes, seconds, dir, ConvertDegreeAngleToDouble(degrees, minutes, seconds, dir)); degrees = 76; minutes = 57; seconds = 44.0; dir = "W"; Console.WriteLine("{0} {1} {2} {3} > {4:f5}", degrees, minutes, seconds, dir, ConvertDegreeAngleToDouble(degrees, minutes, seconds, dir)); } public static string ConvertDoubleToDegreeAngleLat(double doubleDegrees) { string dir = (doubleDegrees >= 0 ? "N" : "S"); return ConvertDoubleToDegreeAngle(doubleDegrees, dir); } public static string ConvertDoubleToDegreeAngleLon(double doubleDegrees) { string dir = (doubleDegrees >= 0 ? "E" : "W"); return ConvertDoubleToDegreeAngle(doubleDegrees, dir); } public static string ConvertDoubleToDegreeAngle(double doubleDegrees, string dir) { doubleDegrees = Math.Abs(doubleDegrees); double latMinPart = ((doubleDegrees - Math.Truncate(doubleDegrees) / 1) * 60); double latSecPart = ((latMinPart - Math.Truncate(latMinPart) / 1) * 60); double degrees = Math.Truncate(doubleDegrees); double minutes = Math.Truncate(latMinPart); double seconds = latSecPart; return string.Format("{0} {1} {2} {3}", degrees, minutes, seconds.ToString("#.0"), dir); } public static double ConvertDegreeAngleToDouble(double degrees, double minutes, double seconds, string dir) { //Decimal degrees = // whole number of degrees, // plus minutes divided by 60, // plus seconds divided by 3600 int multiplier = (dir == "S" || dir == "W") ? -1 : 1; //handle south and west return (degrees + (minutes / 60) + (seconds / 3600)) * multiplier; } } }