目录
本博客讲述了两种计算方式及其代码的实现,并在最后对比了两种方法的结果差异。
比较结果显示,不同的实现方式之间可能存在数值误差。
具体计算步骤如下:
实例代码:
- def float2dfm(f):
- du = int(f)
- fen = int((f-du)*60)
- miao = ((f-du)*60-fen)*60
- return str(du) +'°'+ str(fen) + '′' + str(miao) + "″"
- float2dfm(108.5745800204)
运行上述代码得到的转换效果为:
108°34′28.48807344002239″
具体计算步骤如下:
实现代码:
- def float2dfm1(f):
- du = int(f) # 取整数部分得到度
- fen = int((f-du)*60) # 小数部分乘以60得到分
- miao = (f - du - fen/60)*3600 # 度分转化为小数的剩余部分乘以3600
- return str(du) +'°'+ str(fen) + '′' + str(miao) + "″"
- float2dfm1(108.5745800204)
运行上述代码得到的转换效果为:
108°34′28.488073440022443″
计算了一组数据的计算结果,对比其精度:
| 原始值 | 方法1 | 方法2 |
| 108.5746685377 | 108°34′28.806735720022516″ | 108°34′28.80673572002257″ |
| 108.5746386329 | 108°34′28.699078440016592″ | 108°34′28.699078440016645″ |
| 108.5745800204 | 108°34′28.48807344002239″ | 108°34′28.488073440022443″ |
两种方法,在pyton实现时,在秒小数位的第12位之后有数值误差。