Man war einfach der Meinung, dass niemand sowas braucht.
Delphi-Quellcode:
if InRange(meineZahl, 10.5-, 75.6+DoubleResolution) then
// oder
function InRange(const AValue, AMin, AMax: Double): Boolean;
begin
Result := (AValue+DoubleResolution >= AMin) and (AValue-DoubleResolution <= AMax);
end;
// oder
function InRange(const AValue, AMin, AMax: Double): Boolean;
begin
Result := InRange(AValue, AMin-DoubleResolution, AMax+DoubleResolution);
end;
Gut, das "Epsilon" hab ich hier bissl "minimiert" ... man darf es gern für AMin und AMax jeweils entsprechend den Berechnungen in SameValue berechnen, bzw.
Delphi-Quellcode:
function InRange(const AValue, AMin, AMax: Double): Boolean;
begin
Result := System.Math.InRange(AValue, AMin, AMax) or SameValue(AValue, AMin) or SameValue(AValue, AMax);
end;
InRange bekommt alle Parameter in Registern, die theoretisch auch in der Funktion nicht auf den Stack wandern müssten, falls der Compiler "schlau" genug ist.
Mit einem 4. Parameter für Epsilon und vorallem auch den internen Berechnungen, für ein fehlendes Epsilon, ist das definitiv nicht mehr möglich.