Microsoft ExcelでMachine Epsilonを入手してください
質問
これは、一般的なExcelユーザーではなく、プログラミングエクスペリエンスを持つ人に向けた質問のように思えます。したがって、スーパーユーザーとは対照的に、ここで私は尋ねます。
エプシロン(つまり、Excelの計算で表される最小の非ゼロ数)を返すことができれば、機能を通じて、できれば何らかの方法はありますか?関数を介して取得できない場合、コンパクト関数を介してそれを計算する簡単な方法はありますか?
明確にするために、VBAベースのソリューションを探していません。マクロを実行する必要のないExcelフォーミュラ/スプレッドシートベースのソリューションが必要です。
私のオンラインでの検索は、シンボルのエプシロンを表示する方法に関する議論を主に示しています。
ありがとう。
解決
Excelは常にIEEEダブルで動作します。
0より大きい最小の非依存型の浮動小数点数をあなたに取得する非VBA式
=2^-1022
一方、マシンのエプシロンは、1に追加できる最小数で、1より大きい数になります。
=2^-52
他のヒント
Microsoftは、XLの浮動小数点数精度制限を定義しています。最小の浮動小数点数は、2.2250738585072E-308としてリストされています。 Microsoftサポート記事ID:78113. 。この番号をスプレッドシートに入力すると、実際にはフローティングポイント0を保存しますが、2.2250738585073E-308を保存すると(1つを最小2桁に追加しました)、すべての数字を見ることができます。マシンのエプシロンを求めたように見えますが、XLを使用しているので、実際に見るのはC/C ++フローティングポイントライブラリEpsilonです。を参照してください Microsoft Developer Network xlfregister(フォーム1)トピック.
次のような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