2014-07-26 1 views

답변

1

은 내가 당신을 위해 나쁜 소식을 두려워; 하지만 가능한 해결 방법이있을 수 있습니다.

나쁜 소식

내가 최근에 자이 썬을 사용하여 꽤 상당한 프로젝트를했고, 그 경험에서 자이 썬 문서에 오류가 있다고 결론을 내렸다. 대부분은 Python 문서에서 직접 복사 한 것으로 보이지만 불행히도 구현 간에는 약간의 불일치가 있습니다. 먼저 파이썬 인터프리터, 수입 수학을 시작하고 모듈의 디렉토리를 할 경우

, 당신은 isnan을 발견 할 것이다 : 한편

Python 2.7.5 (default, Jun 17 2014, 18:11:42) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import math 
>>> dir(math) 
['__doc__', '__file__', '__name__', '__package__', 'acos', 'acosh', 'asin', 
'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 
'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 
'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 
'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'] 
>>> print math.isnan.__doc__ 
isnan(x) -> bool 

Check if float x is not a number (NaN). 

을, 자이 썬에서 당신이 경우에 같은, 당신은 수학 모듈에는 isnan 함수가 없다는 것을 알 수 있습니다.

자이 썬을 설치할 때 소스도 설치했습니다. 그래서, 단지 확인하기 위해, 나는 소스를 통해 grepped 다음과 같은 발견 : 더 어디서나 코드에서 isnan (상관없이 문서가 말할 수 있음)이 없다는 것을 증거이다

[[email protected] modules]$ pwd 
/opt/jython/jython-2.5.3/src/org/python/modules 
[[email protected] modules]$ grep -Ri "isnan" * 
math.java:  if (Double.isNaN(v)) 
math.java:  if (Double.isNaN(x) || Double.isInfinite(x) || x == 0.0) { 
struct.java:     Float.isInfinite(v) || Float.isNaN(v))) { 
struct.java:     (Double.isInfinite(v) || Double.isNaN(v))) { 
struct.java:     Float.isInfinite(v) || Float.isNaN(v))) { 
struct.java:     (Double.isInfinite(v) || Double.isNaN(v))) { 

. 자이 썬은 그 기능을 위해 자바 라이브러리를 사용하고있다.

하기 권장 그래서

주변 작업, 당신은 미친 않을거야, 당신의 설치에 아무 문제가 없습니다. 자이 썬으로 작업하면 때때로 이와 같은 문제가 발생할 것이다. 죄송합니다. 내가 제안하는 것은 자바 라이브러리 인 java.lang.Float 또는 java.lang.Double을 사용하는 것이다. 그 모두 정적 메서드 isNaN 있습니다

[[email protected] ~]$ jython 
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:48:36) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_31 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import java.lang.Float as JFloat 
>>> JFloat.isNaN(4.001) 
False 

모두 모두, 나는 자이 썬 좋아을; 그러나 때때로 위와 같은 것들이 우리가 할 수있는 최선입니다. 희망이 도움이됩니다.

관련 문제