如何在Python中打印负零

Nic*_*man 9 python python-2.7

我正在转换十进制度以打印为DMS.转换算法是您期望的,使用modf,添加符号从MS部分取出并仅留给D部分.

一切都很好,除了Degree为负零的情况,-0.一个例子是-0.391612,它应该打印为-0°23'29".

"%d"放下负号.我可以使用什么格式字符串来打印-0?

我已经用一个kludge来解决这个问题,它将数字转换为字符串,如果是负数则预先设置" - ",然后使用"%s"作为格式.这很尴尬,感觉不够优雅.

这是代码:

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"
Run Code Online (Sandbox Code Playgroud)

deg_是为了防止函数返回(-0,-23,-29); 它返回正确的(-0,23,29).

Joh*_*ooy 17

使用 format()

>>> format(-0.0)
'-0.0'
>>> format(0.0)
'0.0'


>>> print '''{: g}°{}'{}"'''.format(-0.0, 23, 29)
-0°23'29"
Run Code Online (Sandbox Code Playgroud)