public static double GetEpsilonRound(this EpsilonType precision) { double result = 0.01f; switch (precision) { case EpsilonType.Decimal: result = 0.001f; break; case EpsilonType.Currency: result = 0.0001f; break; case EpsilonType.Exchange: result = 0.00001f; break; case EpsilonType.Physical: result = 0.000001f; break; case EpsilonType.Quantum: result = 0.0000001f; break; } return(result); }
public static bool CheckNearlyCondition(this NearlyConditionType condition, float a, float b, EpsilonType precision) { bool result = false; switch (condition) { case NearlyConditionType.bigger: result = a > b; break; case NearlyConditionType.bigger_equal: result = a.NearlyEqual(b, (float)precision.GetEpsilonRound()) || a > b; break; case NearlyConditionType.equal: result = a.NearlyEqual(b, (float)precision.GetEpsilonRound()); break; case NearlyConditionType.smaller: result = a < b; break; case NearlyConditionType.smaller_equal: result = a.NearlyEqual(b, (float)precision.GetEpsilonRound()) || a < b; break; } return(result); }