Klar kann man das Alles je nach Aufruf und Anwendung gesondert abfangen, aber um das möglichst einfache und sichere Abfangen geht es mir ja.
Ich denke schon dass das einfache Weiterrechnen mit dem was tan() mir zurückgibt keine Option sein kann.
Was spräche denn gegen NaN, das ist doch in der Praxis ein klarer Marker für das Resultat das man den Wert nicht verwenden kann/darf ?
Für solche Fälle ist NaN ja wohl auch vorgesehen worden.
Was genau hält dich auf?
Delphi-Quellcode:
// Eingangswertebereich: -360 bis 360 Grad als Ganzzahl
// Wer das bis ins plus minus Unendliche haben möchte, soll sich das doch selber schnitzen
function tand(
const X: Integer): Double;
var
Rad: Double;
begin
if (Abs(X) = 90)
or (Abs(X) = 270)
then
begin
Result := System.Math.NaN;
end
else
begin
Rad := DegToRad(X);
Result := System.Math.Tan(
Rad);
end;
end;