【发布时间】:2021-10-13 02:35:57
【问题描述】:
我需要更改此代码以通过以下断言测试:
def degrees_to_dms(degrees_fraction):
''' Convert degrees to degree, minute, second 3-tuples'''
degrees = int(degrees_fraction)
minutes = abs(degrees_fraction - degrees) * 60.0
seconds = np.round((degrees_fraction - degrees - minutes/60.0) * 3600.0, 2)
return (degrees, abs(minutes), abs(seconds))
def dms_to_degrees(d,m,s):
''' Convert degrees, minutes, seconds to fractional degrees'''
return float(d)+float(m/60.00)+float(s/3600.00)
并且它需要通过这个断言测试:
assert dms_to_degrees(*degrees_to_dms(42.2833333333)) == 42.28333333333333
唯一的区别是预期结果中多了四个 3。在迭代过程的每个步骤时,看起来在 dms_to_degrees 中添加 float(d) 和 float(m/60.00) 会导致小数位四舍五入。我想让它输出那些额外的 3。我还注意到 m/60 = 0.2833333332999999,所以我不知道他们为什么期望 2999999 无论如何都会变成全 3。但也许完全需要一种不同的方法。
谢谢。
【问题讨论】:
标签: python function numpy latitude-longitude