def decimal2dms(decimal_degrees):
""" Converts a floating point number of degrees to the equivalent
number of degrees, minutes, and seconds, which are returned
as a 3-element tuple of decimals. If 'decimal_degrees' is negative,
only degrees (1st element of returned tuple) will be negative,
minutes (2nd element) and seconds (3rd element) will always be positive.
Example:
>>> decimal2dms(121.135)
(Decimal('121'), Decimal('8'), Decimal('6.000'))
>>> decimal2dms(-121.135)
(Decimal('-121'), Decimal('8'), Decimal('6.000'))
"""
degrees = D(int(decimal_degrees))
decimal_minutes = libdecimal.getcontext().multiply(
(D(str(decimal_degrees)) - degrees).copy_abs(), D(60))
minutes = D(int(decimal_minutes))
seconds = libdecimal.getcontext().multiply(
(decimal_minutes - minutes), D(60))
return (degrees, minutes, seconds)
评论列表
文章目录