3 Stimmen

Namen von fließenden Typen mit Namen von ganzzahligen Typen übereinstimmen?

Ich muss sagen, ich war erfreut, als ich c# öffnete und sah, dass die Integer-Datentypen Int16,Int32 and Int64 . Damit wurden alle Unklarheiten beseitigt, z. B. dass die Größe mit dem Alter zunimmt.

Was mich wundert, ist die Tatsache, dass es keine oder scheinbar keine Float16,Float32 and Float64 oder zumindest nicht im normalen Gebrauch: eine schnelle Suche auf MSDN bezieht sich auf float64 als R8 (unmanaged type) ist dies nicht das gleiche wie ein double

Meine Vermutung wäre, es gibt nicht so viel Zweideutigkeit in Single und Double (oder sogar Extended(Float80), die nicht in c# existiert, soweit ich weiß, ich bin nicht sicher, wie dies für diese Angelegenheit marschiert werden könnte.) Obwohl Decimal scheint zu sein, ein Float128 und ich habe es als "Erweiterte Fließkomma-Präzision" verwiesen, sollten wir sehen, eine Int128, es zu entsprechen?
EDIT。 Es gibt überhaupt keine Zweideutigkeit in Single oder Double (was eine Vermutung war, aber es scheint wahr zu sein, und ich dachte, ich füge dies zur Klarheit hinzu).

Sollten wir mit dieser Art von Namenskonvention rechnen?/ Würden Sie es begrüßen, wenn wir es täten?

Oder sollten wir einen Schritt weiter gehen und Int<N> für beliebige Zahlengrößen? (ja, ich weiß, dass es Bibliotheken gibt, die so etwas unterstützen)

1voto

Jon Skeet Punkte 1325502

Nun, hier gibt es verschiedene Dinge zu beachten:

  • Die von .NET angebotenen Typen
    • Was ist verfügbar?
    • Wie jeder Typ genannt wird
  • Was am Ende von anderen Sprachen als Aliasing verwendet wird, z. B. C# mit int zu bedeuten System.Int32

Ich persönlich hätte es vorgezogen Float32 y Float64 wie die CLR-Typen. Ich kann sicherlich sehen, einige Verwirrung in F # Benennung der Typen "float" (für System.Double ) und "float32" (für System.Single ). Ich würde nicht wollen, dass Decimal angerufen zu werden Float128 möglicherweise Decimal128 um andere ähnliche Typen zu ermöglichen.

Beachten Sie, dass Byte ist nicht UInt8 Übrigens - vermutlich, weil Bytes in der Regel für willkürliche binäre Speicherung und nicht für wirklich numerische Größen verwendet werden.

Ich glaube nicht, dass es einen großen Grund gibt, willkürliche Werte für Int<N> Allerdings. Zumindest vermute ich, dass die Verwendung ausreichend spezialisiert ist, um sie in eine benutzerdefinierte Klassenbibliothek zu verlagern, anstatt sie zum Bestandteil des Frameworks zu machen. (Beachten Sie jedoch, dass BigInteger ist Teil von .NET 4.0).

0voto

David Morton Punkte 15950

Nun, in C# sind es float und double statt single und double, aber es ist derselbe allgemeine Unterschied. Denken Sie daran, es gibt eine Alias in C# für jeden eingebauten Typ . Wie für die willkürliche Zahl Größen, F# ist die Einführung BigInteger, die kümmern sollte, dass, aber die willkürliche Größe bei der Angabe der Anzahl der rationalen die ganze Zahl halten kann wäre wahrscheinlich ein Performance-Hit, wie die eingebauten Typen sind alle fein abgestimmt auf Leistung in der CLR.

Außerdem ist decimal kein Gleitkommatyp im Sinne des IEEE. Sicher, es ist ein Hochpräzisionstyp, der einen fließenden Dezimalpunkt ermöglicht, aber es ist kein "Fließkommatyp" im Sinne des IEEE. Abgesehen von seiner eingeschränkten Genauigkeit kann er nicht die seltsamen Dinge tun, die float tut (z. B. 2x2=3,9999999999999), und aus diesem Grund wird er häufig in Finanzberechnungen verwendet.

Wenn Sie wirklich nach etwas suchen, mit dem Sie viel mit Zahlen arbeiten können, sollten Sie eine funktionale Sprache wie F# anstelle von C# wählen. Funktionale Sprachen sind in der Regel besser bei schweren Zahlen Crunching sowieso ... sie neigen dazu, mehr prägnant sein.

Was die Namenskonvention angeht... Ich habe mit C# angefangen... C# ist mein Standard, und deshalb sind andere Sprachen für mich seltsam. Es hängt alles von der Perspektive des Entwicklers ab, nehme ich an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X