math_isAbsolutelyClose

指定した2つの値が互いに近似しているどうかを表す値を取得します。


taiseiue | 2024-05-02

定義

名前空間: Alice.Math
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.Math.cs

math_isAbsolutelyClose(number,number,number)

指定した2つの値が互いに近似しているどうかを表す値を取得します。

AliceScript
namespace Alice.IO;
public bool math_isAbsolutelyClose(number x, number y, number tolerance) requires(tolerance > 0);
引数
x 比較する一方の値
y 比較するもう一方の値
tolerance xyのうち絶対値の大きいほうの値に対して許容される最大誤差。この値は0より大きい必要があります。
戻り値
bool xyが互いに近似している場合はtrue、それ以外の場合はfalse

対応
AliceScript 4
AliceSister 4
Losetta 0.11

説明

この関数は、以下の表に従ってxyが一定の許容誤差以内で近似しているかを調べます。 toleranceは、xyの差の絶対値の最大値です。

条件 結果
\(x=\)NaNまたは\(y=\)NaN 等しくない(false)
\(x=\pm\infty\)かつ\(y\neq\pm\infty\) 等しくない(false)
\(x\neq\pm\infty\)かつ\(y=\pm\infty\) 等しくない(false)
\(x=\pm\infty\)かつ\(y=\pm\infty\) x,yが同符号の場合のみ等しい
\(x=y\) 等しい(true)
その他の場合 \(tolerance \geq [x - y]\)

ふたつの値の絶対値の大きい方に対する最大許容誤差を決めて近似を判定するには、math_isRelativelyCloseを使用してください。

次の例では、0.1 + 0.1 + 0.1の結果が0.3とは厳密には異なることを確認し、1e-9以上の誤差はないことを確認しています。

AliceScript
using Alice.Math;

number x = 0.1 + 0.1 + 0.1;
number y = 0.3;
print(x == y);//出力:false

print(math_isAbsolutelyClose(x, y, 1e-9));//出力:true