Zur ersten Frage:
Wozu?
Du hältst doch dein Location Objekt die ganze Zeit vor.
Wenn du also die formatierten Daten benötigst, dann gibst du diese via Convert() aus.
Wenn nicht, dann nutzt du eben weiter deine Location.
Also ich finde das schon ziemlich schlüssig.
Anderes Beispiel: ich habe einen Wert 'Meter'. Dem gebe ich noch eine Methode 'Convert()' mit, welche mir die Yards errechnet.
Auch hier: ich benötige kein Meter.Convert().Reconvert() um auf Meter zugreifen zu können, da ich simpel mit Meter auf Meter zugreifen kann.
Wie dem auch sei: Location.convert(String) sollte doch genau das tun...
Zum "Formatierungsproblem":
Zum einen ist das Format eben nicht als 1/60 der Minute definiert, sondern als 1/3600 des Grads. Da kann durchaus einmal ne 60 oder ne 59,873 bei rum kommen.
Wenn du andere Plattformen befragst, kann da durchaus eine Dezimalsekunde mit Nachkommastellen bei rum kommen. Millisekunden, Nanosekunden etc.pp.
(Bei der Navigation war laut Wiki die Tertie 1/60 der Winkelsekunde.)
Vergleichst du http://www.deine-berge.de/umrechner_koordinaten.php
Da sieht es genau so aus.
Eventuell ist die 60 ja eigentlich nur eine 59.9999999999999999999999999983123, die vom System freundlicherweise auf 60 aufgerundet und entsprechend dargestellt wird. Floats und Doubles sind da ja sehr ungenau.
Du müsstest also selbst zusehen, dass du die Daten entsprechend deiner Vorstellungen formatiert bekommst.