Die Konstante Math.Pi
ist nach Reflektor und MSDN gleich 3,14159265358979323846. Wenn Sie sich die Math-Klasse in Visual Studio 2010 ansehen, wird der Wert als 3.14159 angezeigt. Wen kann ich beschuldigen, kostbare Konstanten abzubauen?Sind Doppelkonstanten für die Anzeige in VS abgeschnitten?
Antwort
Tut mir leid, mich zu wiederholen, aber wie bekommen Sie diese Nummer? Wenn ich die Maus über die Konstante schwinge oder sie im Fenster "Immediate" oder "Watch" in VS2010 drucke, erhalte ich 3.1415926535897931, was auch der Wert ist, den ich bekomme, wenn ich mscorlib in Reflector ansehe.
Obwohl es weniger Präzision als MSDN behauptet, ist es immer noch viel besser als die Nummer, die Sie sprechen. VS muss eine Formatierung für das Drucken von Gleitkommazahlen auswählen. Mit den Ergebnissen sehe ich den Standard ziemlich akzeptabel.
Vielleicht haben Sie ein Plugin für VS 2010, das die Ausgabe der Nummer ändert. Oder Sie zeigen die Nummer in einem Anzeigekontext an, in dem die Zahl abgeschnitten werden muss. Wo genau sehen Sie diese Nummer in Visual Studio?
Ich weiß nicht, warum die OP nicht veröffentlichen wird, wie es die Dinge so unglaublich viel löschen würde, aber Sie können wie folgt wiedergeben:
- Öffnen Sie die IDE
- Math eingeben. PI in eine CS-Datei.
- auf Math.PI der rechten Maustaste und klicken Sie auf
Diese die Metadaten-Datei für Math eröffnet, ‚Gehe zu Definition‘, die die folgendes enthält:
//
// Summary:
// Represents the ratio of the circumference of a circle to its diameter, specified
// by the constant, π.
public const double PI = 3.14159;
Anscheinend Resharper bietet bessere Metadaten-Ansicht als VS, weil es den gleichen Wert wie Reflektor gibt. Wenn ich jedoch Resharper deaktiviere, erhalte ich das Ergebnis, das du beschreibst. Ungerade. –
Yup, muss es sein. Dieser Text wird automatisch aus den Metadaten generiert. Und es ist offensichtlich nicht nötig, öffentliche Konstanten vom Typ double in einen String mit allen 15 signifikanten Ziffern zu konvertieren. Dies ist das Standardformatierungsverhalten der Funktion printf() in C/C++ mit dem Formatbezeichner% f. Es ist sehr wahrscheinlich, dass dieser Code in C++ geschrieben wurde, da die Metadatenauflistungsschnittstelle COM-basiert ist. –
Danke Hans, das ist ziemlich interessant! – mpeterson
Sie die VS verdenken Metadatenansicht, die Sie erhalten, wenn Sie F12 auf etwas drücken, für das Sie keine Quelle haben.
Zumindest nehme ich an, dass du das machst, weil es der einzige Ort ist, wo ich die abgeschnittene Konstante finde, von der du sprichst.
Warum macht es das/Woher kommt es? Wer weiß ...
Verwandte http://StackOverflow.com/q/3742692/38206 –