Although the coordinates of Position.Location can be defined with :semicircles format, they can't be retrieved in semicircles units.

The coordinates can only be retrieved using the methods toDegrees() or toRadians().

Does anyone know why there is no method toSemicircles()?

**EDIT:****What is the unit semicircles and what are the benefits?**

For example, the second hand of a watch can move continuously and smoothly or snap to every second. In the latter case, the angle of the second hand is mapped onto a grid of 60 seconds / 360 degrees.

Similarly, the exact geographic angles lat/lon can be mapped onto a grid with the size of the maximum value of a Lang.Number, which is 2^31 = 2,147,483,648 = 0x80000000. Therefore the formulas for the calculation of semicircles are

semicircles = degrees * 0x80000000 semicircles / 180 degrees

semicircles = radians * 0x80000000 semicircles / Math.PI

This conversion results in a small rounding error, since the true angle usually doesn't exactly hit the grid point. However, the advantage is that half of the memory space is saved. A pair of lat/lon in radians or degrees needs size of storage for two Lang.Double (64bit) and a pair of lat/lon in semicircles needs size of storage for two Lang.Number (32bit).

For example to store a course with every second recording for a time period of 1h = 3600sec in an array, storage is needed (without the overhead due to the object representation and for the management of the array):

32bit * 2 * 3600 = 230.400bit = 28,8kB for numbers

64bit * 2 * 3600 = 460.800bit = 57,6kB for doubles

Moreover, the execution performance of numbers is more efficient than that of doubles.

And because of these advantages, especially the smaller memory size, in a location object lat/lon are stored in semicircles and also in the fit the course points are stored in semicircles.