Latitude and longitude readings are taken up to six decimal points for calculations. Double precision variable is used for the same.
Chances of error may be to the tune of 2.5 metres to 10 metres. Under the open sky, where GPS satellites are easily located, the error is minimum. On a cloudy day, sighting of GPS satellites may take a longer time. So before pressing S2, wait for a while until values of latitude and longitude get stabilised.
The code is written in Arduino programming language. ATmega328P is programmed using Arduino IDE software. Select the correct board from Tools Board menu in Arduino IDE and burn the program (sketch) through the standard USB port in your computer.
Arduino Uno has an external clock circuitry with a 16MHz resonator and two picofarad capacitors. You can use Arduino Uno board directly, but to get it programmed on an 8MHz internal clock is rather challenging. For that you need an unprogrammed ATmega328P chip that has never been programmed with 16MHz external resonator. Because once it is programmed with an external clock, it will never go back to 8MHz internal clock mode.