after using the function GPRMC2Degrees it only gives me:
The value returned by the function is not truncated to two decimal places. You may only be printing the value to two decimal places. Impossible to say from the snippets you posted, especially when the Arduino does not have a function called Int().
The print() method has optional arguments. The effect depends on the type being printed. For floats, the default behavior is to print two decimal places. There is an optional argument to change that behavior, documented on the Serial.print() page. You could have looked it up.
Arduino double is the same accuracy as float (32 bit single precision) which is quesationable for GPS coordinates, but better than your experience.
Are you sure that [tt]char Longitude="5131.1922";[/tt] means 51° 31' 19.22" or does it mean 51° 31.1922' ?
I fear your integer arithmetic truncating / rounding does not work as expected.
Did you check the result of [tt]peter - (int(peter / 100) * 100)[/tt] ( 31.1922 )?
Does[tt] int(peter / 100)[/tt] round or truncate ???
Does arduino do a float division when it's about [tt]peter / 60[/tt] ?
Better have more intermediate variables with the correct type ( end eventual debug output )