2010-07-07 10 views
11

Kann jemand erklären, warum, in der .NET-Framework, gibt es PointF Strukturen (mit der Single-Precision float Typ) und keine "PointD" (mit der doppelten Genauigkeit double Typ)?Warum gibt es im .NET Framework PointF (float) und kein "PointD" (double)?

Haben sie festgestellt, dass eine solche Genauigkeit im Namespace System.Drawing niemals Sinn machen würde? Gibt es einen anderen Grund?

+5

Es hat keinen Sinn! :) – leppie

+0

Ich schätze, eine vielleicht bevorstehende Migration zu doppelter Genauigkeit in der Zeichnung würde den Speicherplatzverbrauch zum Zeitpunkt des Schreibens dieser anständig erratenen Erklärung nicht rechtfertigen. :-) Aber ich verstehe was du meinst. In der vielleicht nicht so fernen Zukunft brauchen wir vielleicht doppelte Präzision, da wir jetzt 8 GB RAM, Tausende von GBs Festplattenspeicher, 64-Bit-CPUs und so weiter haben ... und wir werden nie mehr als Petabytes haben, oder? ;-) – Andreas

+0

Was wäre nützlicher: Grafische Punkttypen mit Double X und Y hinzufügen oder implizite Konvertierungen von Double zu Float erlauben? – supercat

Antwort

20

Zu dem Zeitpunkt, wenn GDI + (die Technologie, die auf sich System.Drawing basiert) entwickelt wurde, war Hardware nicht einmal annähernd die Leistung und die Fähigkeit von heute und ein Double -basierte Koordinatensystem eine schwere Belastung für die Hardware auferlegt für sehr hätte wenig Vorteil am Display-Ende, mit Displays mit der Größe und Auflösung, die sie getan haben. Selbst mit den heutigen Monster-Videokarten können wir erst dieses Jahr Gleitkommaoperationen mit doppelter Genauigkeit und akzeptabler Leistung durchführen, und dies ist immer noch die halbe Geschwindigkeit von Operationen mit einfacher Genauigkeit. Es war also eine praktische Möglichkeit, die Grafikoperationen mit Single Typen zu modellieren.

Heute, mit WPF, haben wir eine Plattform, die mit einem Auge auf die nächsten ein oder zwei Dekaden begann, und so Double zu verwenden, um das Koordinatensystem sinnvoll zu modellieren.

+2

Ich genieße wirklich die Erklärung, die Sie in dieser Antwort gaben. Vergangenheit, Gegenwart und Zukunft, Covered! –

+0

+1, gute Antwort! –