Kar*_*en9 -2 python units-of-measurement gpsd
我有一些查询gpsd的python代码
session=gps.gps(mode &c &c
report=session.next()
Run Code Online (Sandbox Code Playgroud)
正如在www上发表的那样.它工作得很好,但以km/h为单位给出海拔高度和速度.在航空(和自由世界),我想要结和脚.当然我可以转换,但这会增加CPU负载并降低准确性.难道没有办法让gps库产生"适当的"测量单位吗?
它肯定不会减慢你的程序到几乎任何可衡量的程度来转换Python中的单位,也不会降低准确性.1节完全等于1.852公里/小时,1英尺正好等于0.3048米,因此我们得到:
knots = speed / 1.852
altft = alt / 0.3048
Run Code Online (Sandbox Code Playgroud)
这些数字尽可能准确.
至于这些划分会产生多少错误,这些划分是精确的安全操作,假设使用了32位IEEE浮点数,并且你进行了1次额外乘法和1次额外除法.这些中的每一个都具有0.5个二进制数字精度的最大误差,对于23个精度的总共1个二进制数字的误差.因此,误差的最大值肯定不超过1 /(2 ^ 22)或1/4194304.对于500节的速度,它会产生每小时8.7英寸的差异,对于高度约为30000英尺,它会产生0.86英寸的差异(哎呀,也许你的GPS接收器是颠倒的).如果您认为这些错误很重要,您应该知道任何理智的库和Python都已使用双精度数,因此错误大约小1073741824倍.