「EPS (実数)」の版間の差分

提供:MonoBook
imported>MikeCAT
作成
 
編集の要約なし
 
2行目: 2行目:
比較結果がおかしくなることを防ぐために使われる小さな値である。
比較結果がおかしくなることを防ぐために使われる小さな値である。


主に1e-7~1e-10程度が使用される。(要出典)
主に1e-7から1e-10程度が使用されると([[要出典]])には書かれている。
しかしながら32ビット浮動小数点数が主流の[[Unity]]などでは1e-3から1e-5あたりもよく使われる。


==使用方法==
==使用方法==

2021年12月17日 (金) 05:56時点における最新版

EPSとは、浮動小数点演算の過程で発生する演算誤差により、 比較結果がおかしくなることを防ぐために使われる小さな値である。

主に1e-7から1e-10程度が使用されると(要出典)には書かれている。 しかしながら32ビット浮動小数点数が主流のUnityなどでは1e-3から1e-5あたりもよく使われる。

使用方法[編集 | ソースを編集]

#include <math.h>
#define EPS 1e-7
double a,b;

a<b+EPS		/* a<=b */
a+EPS<b		/* a<b  */
fabs(a-b)<EPS	/* a==b */

使用例[編集 | ソースを編集]

#include <stdio.h>

#define EPS 1e-7

int main(void) {
	double a;
	for(a=0.0;a+EPS<10.0;a+=0.1) {
		printf("%.1f\n",a);
	}
	return 0;
}

このコードはよく実数演算の誤差により意図しない結果が出てくる例として示されるコードを改良したものであるが、 EPSを使用することにより比較結果が直感に近くなっていることがわかる。