NaN的Python语言原因(除零外)
我现在有点不知所措,我有一个程序可以很好地处理大多数参数,但是对于一些参数,它抛出了一个NaN异常。问题似乎在于计算略大于1的值。我有一个类似于f(x,t)的函数,对于x的大值,f随t迅速增加,没有问题,但是对于x的小值,f随t缓慢增加。对于较小的x值,它根本不起作用(表示离散时间步长的数组): 我不明白NaN是如何返回值的,这些值显然没有趋于无穷大,并且略大于1。是否存在可能引发此异常的数据类型问题 对于较大的x值,行为可能如下所示:NaN的Python语言原因(除零外),python,nan,Python,Nan,我现在有点不知所措,我有一个程序可以很好地处理大多数参数,但是对于一些参数,它抛出了一个NaN异常。问题似乎在于计算略大于1的值。我有一个类似于f(x,t)的函数,对于x的大值,f随t迅速增加,没有问题,但是对于x的小值,f随t缓慢增加。对于较小的x值,它根本不起作用(表示离散时间步长的数组): 我不明白NaN是如何返回值的,这些值显然没有趋于无穷大,并且略大于1。是否存在可能引发此异常的数据类型问题 对于较大的x值,行为可能如下所示: 1.0 1.000000000000074 1.00000
1.0
1.000000000000074
1.000000000000486
1.000000000000888
等等,没有任何问题 明确表示PositiveInfinity/PositiveInfinity将返回NaN。(并谈到使用PosInf=1e300000作为正向可靠性的值,但也指出这不是可移植的或不丑陋的)
表示以下附加示例:
- 将NaN作为至少一个操作数的操作
- 不确定形式
- 分区0/0和±∞/±∞ (分别如您的问题和上文所述)
- 乘法0×±∞ 和±∞×0
- 补充∞ + (−∞), (−∞) + ∞ 和等价减法
- 本标准具有以下替代功能:
- 标准的
函数和整数指数pow
函数定义0^0,1∞, 及∞0作为1。(注意,我希望使用的0**0或至少与python 2.7中的pow类似的0**0返回1)pown
函数将所有三种不确定形式定义为无效操作,因此返回NaNpowr
- 具有复杂结果的实际操作,例如:[对于我尝试的所有操作,使用math.sqrt、math.log、math.asin而不是在python中抛出math Domain Error而不是返回NaN]
- 负数的平方根
- 负数的对数
- 小于的数字的反正弦或余弦−1或大于+1
- 标准的
1.0
1.000000000000074
1.000000000000486
1.000000000000888