Поправьте меня, если я ошибаюсь, но может быть лучше преобразовать двойные значения в строки, а затем всякий раз, когда вы их вызываете, преобразовывать их обратно в двойные. Звучит как боль, но сайт оракула (http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) говорит:
"использовать число с плавающей запятой (вместо двойного), если вам нужно сохранить память в больших массивах чисел с плавающей запятой. Этот тип данных никогда не следует использовать для точных значений, таких как валюта"
prefEditor.putString("Latitude", Double.valueOf(loc.getLatitude()).toString());
Затем для вызова значения
String latitudeString = pref.getString("Latitude", "0");
double latitude = Double.parseDouble(latitudeString);
Это определенно кажется чем-то большим, чем неприятность, но, скорее всего, также скорее вернет точное значение, которое вы сохранили, а не что-то слегка отключенное. И я полагаю, это будет зависеть от того, насколько точными должны быть значения.
Хотя, что касается использования массива, я ничего не понимаю, потому что мне никогда не приходилось их использовать, и у меня нет с ними опыта.