python学习笔记12:小数类型的角度到度分秒的转换

本文详细介绍了两种计算角度到度分秒的方法,并通过实例展示了在Python中实现的代码。比较结果显示,两种方法在处理小数部分时存在微小的数值误差。
摘要由CSDN通过智能技术生成

目录

实现方式1

实现方式2


本博客讲述了两种计算方式及其代码的实现,并在最后对比了两种方法的结果差异。

比较结果显示,不同的实现方式之间可能存在数值误差。

实现方式1

具体计算步骤如下:

  1. 数值取整数部分得到度 108.5745800204 -->  108度
  2. 取小数部分乘以60得到分  0.5745800204*60 --> 34.474801224000004 --> 34
  3. 取分的小数部分乘以60得到秒 0.474801224000004 * 60 --> 28.488073440000242

实例代码:

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″

实现方式2

具体计算步骤如下:

  1. 数值取整数部分得到度 108.5745800204 -->  108度
  2. 取小数部分乘以60得到分  0.5745800204*60 --> 34.474801224000004 --> 34
  3. 度小数部分-分的小数值,再乘以3600 (108.5745800204 - 108 - 34/60) *3600--> 28.488073440022443

实现代码:

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.5746685377108°34′28.806735720022516108°34′28.80673572002257
108.5746386329108°34′28.699078440016592108°34′28.699078440016645
108.5745800204108°34′28.48807344002239108°34′28.488073440022443

两种方法,在pyton实现时,在秒小数位的第12位之后有数值误差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值