You've already forked lazarus-ccr
LazMapViewer: Fix rounding error in GPS float to degrees-minutes-seconds conversion.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8582 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1295,7 +1295,12 @@ procedure SplitGps(AValue: Double; out ADegs, AMins: Double);
|
||||
begin
|
||||
AValue := abs(AValue);
|
||||
AMins := frac(AValue) * 60;
|
||||
ADegs := trunc(AValue);
|
||||
if abs(AMins - 60) < 1E-3 then
|
||||
begin
|
||||
AMins := 0;
|
||||
ADegs := trunc(AValue) + 1;
|
||||
end else
|
||||
ADegs := trunc(AValue);
|
||||
end;
|
||||
|
||||
procedure SplitGps(AValue: Double; out ADegs, AMins, ASecs: Double);
|
||||
@ -1303,6 +1308,16 @@ begin
|
||||
SplitGps(AValue, ADegs, AMins);
|
||||
ASecs := frac(AMins) * 60;
|
||||
AMins := trunc(AMins);
|
||||
if abs(ASecs - 60) < 1E-3 then
|
||||
begin
|
||||
ASecs := 0;
|
||||
AMins := AMins + 1;
|
||||
if abs(AMins - 60) < 1e-3 then
|
||||
begin
|
||||
AMins := 0;
|
||||
ADegs := ADegs + 1;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function GPSToDMS(Angle: Double): string;
|
||||
|
Reference in New Issue
Block a user