degree2DMS function

List<num> degree2DMS(
  1. num degDEC
)

Converts decimal degrees to degrees, minutes, and seconds.

Example:

print(degree2DMS(23.504166666666666));  // Output: [23, 30, 15]

Implementation

List<num> degree2DMS(num degDEC) {
  if (degDEC.isNaN) {
    return [];
  }

  var absDegDec = degDEC.abs();

  // Calculate degrees
  int deg = absDegDec.truncate();

  // Calculate minutes
  num remainder = absDegDec - deg;
  int min = (remainder * 60).truncate();

  // Calculate seconds
  double sec = ((remainder * 60) - min) * 60;

  // Adjust values if seconds or minutes are 60 or more
  if (sec >= 60) {
    sec = 0;
    min += 1;
  }
  if (min >= 60) {
    min = 0;
    deg += 1;
  }

  // Return result with correct sign for degrees
  return [degDEC >= 0 ? deg : deg * -1, min, sec];
}