Ich arbeite in einer Math-Bibliothek, und aufgrund der inhärenten Probleme der Arbeit mit double
kodiere ich alle Gleichheitsvergleiche Typ a == b
als Math.Abs(a - b) <= epsilon
.Wie verwende ich wissenschaftliche Notation in const Feldern?
Auch standardmäßig, möchte ich meine formatierten Strings mit der maximalen Genauigkeit erzeugt werden. Das heißt, wenn Epsilon0.001
ist, möchte ich mein Standardformat N3
sein.
Zum Glück habe ich die folgenden:
public static class Math3D
{
internal const int ROUND = 3;
public const double Epsilon = 1e-ROUND;
}
... und ich bekam einen Übersetzungsfehler. Anscheinend ist das nicht erlaubt.
Mit dieser Einschränkung sehe ich keine Möglichkeit, dass ich beide Interdependant-Konstanten als Constants definieren kann. Offensichtlich kann ich Epsilon
als ein schreibgeschütztes Feld definieren, aber ich fühle, dass das irgendwie konzeptuell falsch ist. Fehle ich einen offensichtlichen Weg, dies zu tun?
Was ist der wörtliche Fehler? – rae1
Sie machen eigentlich Mathe für'Epsilon' und erzeugen keinen Wert von 0,001. –
Was ist falsch daran, ein 'readonly'-Feld zu verwenden? – xxbbcc