Frage

Aus mehreren Gründen muss ich Floats in meinem Code anstelle von Doppel verwenden. Um ein wörtliches in meinem Code zu verwenden, muss ich so etwas schreiben wie:

float f = 0.75F;

Oder der Compiler wird barf, da er nur "0,75" als Doppel behandelt. Gibt es irgendetwas, das ich in meinen Code einfügen oder in Visual Studio einstellen kann, das es dazu bringt, ein wörtliches "0,75" als Schwimmer zu behandeln, ohne jedes Mal ein "F" anhängen zu müssen?

War es hilfreich?

Lösung

Float kommt mit einem F :-)

Andere Tipps

Nein - zum Glück, imo. Literale werden überall genauso behandelt.

Dies ist eine gute Sache - stellen Sie sich vor, ein Wartungsentwickler kommt und betrachtet Ihren Code in einem Jahr. Er sieht "0,75" und denkt: "Ich kenne C# - das ist ein Doppel! Halten Sie sich an, wie wird es einer Float -Variablen zugeordnet?" Ick.

Ist es wirklich so schmerzhaft, überall das "f" hinzuzufügen? Hast du wirklich das Viele Konstanten? Könnten Sie sie extrahieren wie Konstante Werte, so dass alle Ihre "f-suffixed" Literale am selben Ort sind.

FYI - Sie finden alle Compiler -Optionen für C# at http://msdn.microsoft.com/en-us/library/6ds95cz0.aspx. Wenn Sie dort nachsehen, werden Sie feststellen, dass es keine Option gibt, die dies zulässt - und dies zu Recht aus den Gründen, die @jon skeet notiert hat.

Die Sprache interpretiert schwimmende Punkt -Präzisions -Literale als doppelt überall. Dies ist keine konfigurierbare Funktion des Compilers - und aus gutem Grund.

Konfigurieren Sie, wie die Sprache, die Sie Code interpretieren, zu Problemen mit Kompatibilität und der Fähigkeit von Wartungsentwicklern führen, zu verstehen, was der Code bedeutet.

Obwohl Sie im Allgemeinen nicht ratsam sind, können Sie den Schmerz in C# 3 ein wenig reduzieren, indem Sie:

var f = 0.75F;

Seien Sie einfach vorsichtig, denn das Vergessen des 'f' -Suffix mit dieser Syntax führt dazu, dass der Compiler ein doppeltes und kein Schwimmer erstellt.

Ich würde Ihnen raten, immer zu verwenden

var meaning = 1f;

Weil das Schlüsselwort "var" eine Menge menschlicher Interpretations- und Wartungszeit spart.

Das richtige Verhalten wäre nicht, dass ein Compiler nicht suffixe Literale als Single-Precision-Schwimmer interpretiert, sondern zu erkennen ist double Wert, es gibt entweder genau einen eindeutig korrekten Korrektur float Darstellung oder (in wenigen seltenen Randfällen) werden genau zwei gleich gute Werte vorhanden sein, von denen keiner mehr als ein Teil pro vier Mindesten des eindeutig korrekten Wertes ist. Semantisch konvertiert von float zu double Sollte als Verengung von Conversions angesehen werden (da sie verlangen, dass der Compiler an Informationen "gilt", die er nicht hat), aber die praktischen Schwierigkeiten, die verursachen würden, könnten es möglicherweise rechtfertigen, Conversions in diese Richtung zu vergrößern.

Vielleicht sollte man Microsoft beantragen, eine erweiterte Konvertierung von hinzuzufügen double zu float? Es gibt keinen guten Grund, warum Code, der Grafikkoordinaten als berechnet double Sollte bei Aufrufen von Zeichnungsfunktionen mit Typecasts überfüllt sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top