我正在将十进制度数转换为DMS格式。转换算法是您所期望的,使用modf,加上符号从MS部分取出,只留在D部分。在
除了度数为负0,-0的情况外,一切都很好。例如-0.391612,应打印为-0°23'29“。在
“%d”删除负号。我可以使用什么格式的字符串打印-0?在
将其转换为“-”格式,如果“klve”使用的是“负数”格式。这很尴尬,感觉不雅观。在
代码如下:
def dec_to_DMS(decimal_deg):
deg = modf(decimal_deg)[1]
deg_ = fabs(modf(decimal_deg)[0])
min = modf(deg_ * 60)[1]
min_ = modf(deg_ * 60)[0]
sec = modf(min_ * 60)[1]
return deg,min,sec
def print_DMS(dms): # dms is a tuple
# make sure the "-" is printed for -0.xxx
format = ("-" if copysign(1,dms[0]) < 0 else "") + "%d°%02d'%02d\""
return format % dms
print print_DMS(dec_to_DMS(-0.391612))
>>> -0°23'29"
deg_
是为了防止函数返回(-0,-23,-29);它返回正确的(-0,23,29)。在
必须将度数打印为浮点值,而不是整数,因为2个补码整数(在大多数平台上使用)没有负零。
%d
用于格式化整数。在deg
、min
和sec
都是浮点数,fabs
调用在那里,因此不打印相应的符号。在或者使用旧格式字符串样式:
^{pr2}$使用
format()
相关问题 更多 >
编程相关推荐