2012-02-21 5 views
4

이것은 일반 Excel 사용자가 아닌 프로그래밍 경험이있는 사람들에게 더 나은 질문으로 보입니다. 따라서 수퍼 유저와는 달리 여기에서 묻습니다.Microsoft Excel에서 기계 엡실론 가져 오기

엡실론 (즉, Excel의 계산에서 표현할 수있는 가장 작은 숫자가 아닌 숫자)을 반환하는 방법은 무엇입니까? 함수를 통해 검색 할 수없는 경우, 간단한 함수를 통해이를 계산하는 빠른 방법이 있습니까?

VBA 기반 솔루션을 찾고 있지 않다. 매크로를 실행하지 않아도되는 Excel 수식/스프레드 시트 기반 솔루션을 원합니다.

온라인으로 검색 한 결과 대부분 엡실론 심볼을 표시하는 방법에 대한 토론이 나타났습니다.

감사합니다.

답변

6

Excel은 항상 IEEE double에서 작동합니다. , 다른 한편으로는, (1)에 추가 할 수있는 가장 작은 수는

=2^-1022 

기계 엡실론 당신에게 0보다 작은 비 비정규 부동 소수점 숫자를 얻을 것이다

비 VBA 표현입니다 결과는 1보다 큰 수입니다. 배정도의 경우는

=2^-52 
+0

네가 두 번 이상 필요하다면 그것을 정의 된 이름에 넣는다. –

2

당신은 같은 VBA 서브 루틴을 쓸 수 있습니다 :

Public Sub ComputeMachineEpsilon() 
    Dim g, ex, eps As Double 
    Dim i As Long 
    g = 1 
    i = 0 
    Do 
     i = i + 1 
     g = g/2 
     ex = g * 0.98 + 1 
     ex = ex - 1 
     If ex > 0 Then eps = ex 
    Loop While ex > 0 

    MsgBox ("No. of Iterations " & i) 
    MsgBox ("Machine Epsilon is " & eps) 

    End Sub 

하지만 내 컴퓨터에 그것은 2,22E-16를 제공하고, 내가 셀에 =2^-113를 작성하고 9,62965E-35를 얻을 수 있기 때문에 이상하다.

편집 :

=1*(0,5-0,4-0,1) 

내가 얻을 : -2,78E-17

+0

감사합니다. 그러나 VBA가 아닌 솔루션, 즉 Excel 기능 또는 스프레드 시트 기능을 사용하여 엡실론을 반환하는 솔루션을 원했습니다. 매크로를 실행하지 않아도됩니다. 죄송 합니다만 이것에 대해서는 명확하지 않았습니다. 나는이 점을 명확히하기 위해 나의 질문을 업데이트했다. 감사. – SSilk

4

마이크로 소프트는 XL에 대한 부동 소수점 수의 정밀도 한계를 정의합니다. 가장 작은 부동 소수점 숫자는 Microsoft support article ID: 78113에 2.2250738585072E-308로 나열됩니다. 내 스프레드 시트에이 숫자를 입력하면 실제로 부동 소수점 0이 저장되지만, 2.2250738585073E-308을 저장하면 (최소 유효 자릿수에 1을 더함) 모든 자릿수를 볼 수 있습니다. XL : XL을 사용하고 있기 때문에 실제로 볼 수있는 것은 C/C++ 부동 소수점 라이브러리 엡실론입니다. Microsoft Developer Network xlfRegister (Form 1) topic을 참조하십시오.