Dezimal in Double umwandeln

Ich möchte eine Track-Bar verwenden, um die Deckkraft eines Formulars zu ändern.

Dies ist mein Code:

decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;

Wenn ich die Anwendung erstelle, wird der folgende Fehler angezeigt:

Cannot implicitly convert type decimal to double

Ich habe versucht, trans und double zu verwenden, aber dann funktioniert das Steuerelement nicht. Dieser Code funktionierte gut in einem früheren VB.NET-Projekt.

Lösung

Eine explizite Umwandlung in double wie hier ist nicht notwendig:

double trans = (double) trackBar1.Value / 5000.0;

Es genügt, die Konstante als 5000.0 (oder als 5000d) zu identifizieren:

double trans = trackBar1.Value / 5000.0;
double trans = trackBar1.Value / 5000d;
Kommentare (0)

Eine allgemeinere Antwort auf die allgemeine Frage "Decimal vs Double?": Dezimal für monetäre Berechnungen, um die Genauigkeit zu erhalten, Double für wissenschaftliche Berechnungen, die nicht durch kleine Unterschiede beeinträchtigt werden. Da Double ein CPU-eigener Typ ist (die interne Darstellung wird in Base 2 gespeichert), sind Berechnungen mit Double besser als mit Decimal (das intern in Base 10 dargestellt wird).

Kommentare (0)

Es hört sich so an, als ob this.Opacity ein Doppelwert ist, und der Compiler mag es nicht, wenn Sie versuchen, einen Dezimalwert hineinzupacken.

Kommentare (0)