处理(或绕过)计算中的域错误

时间:2016-03-25 21:27:31

标签: python math exception-handling logarithm

我使用了here中的一些代码,将纬度转换为“南极米”。

两个单位测试将转换纬度-90,结果为零,并转换纬度90,这应该将子午线的长度从南极返回到北极。

问题是公式的这一部分:

from math import *

my = log(tan((90 + lat) * pi/360.0)) / (pi/180.0)

因为当我输入-90的纬度时,我得到:

ValueError: math domain error

我想这与tan函数有关,因为它在pi/2

处未定义

另一方面,如果我们“测量距离南极的距离”,我觉得它应该归零。

所以问题是:我应该如何以理智的方式修复这个公式?

我确定这可能是一个常见的问题,但我从未遇到过这样的问题而且我不确定应该做些什么。

更新:这解决了我当前的问题,但我想知道是否有更美好的方式:

    a = tan((90 + self._lat) * pi/360.0)
    b = 0 if a == 0 else log(a)
    c = b / (pi/180.0)
    my = (c * ORIGIN_SHIFT) /180.0

0 个答案:

没有答案