in reply to Re: Regex strings, deg:mm:ss, and all that
in thread Regex strings, deg:mm:ss, and all that
Note that if precision is important you might want to peek at the code and run some tests. For the example above, a round trip conversion from DDMMSS => decimal degrees => DDMMSS results in a one second difference.
The problem is with your use of sprintf, or rather %d.
use strict; use warnings; use Geo::Coordinates::DecimalDegrees; my ( $degrees, $minutes, $seconds ) = ( 23, 34, 6 ); my $decimal_degrees = dms2decimal( $degrees, $minutes, $seconds ); printf "%d:%02d:%02.f => %.5f\n", $degrees, $minutes, $seconds, $decimal_degrees; ( $degrees, $minutes, $seconds ) = decimal2dms( $decimal_degrees ); printf "%.5f => %d:%02d:%02.f\n", $decimal_degrees, $degrees, $minutes, $seconds; __END__ c:\test>junk5 23:34:06 => 23.56833 23.56833 => 23:34:06
The module doesn't int the seconds, allowing for input and output of fractional seconds. If you don't want the fractions, you should use %.f rather than %d. And while your at it, it's conventional to include leading zeros on coordinates, hence %d:%02d:%02.f.
|
|---|