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.
640
3
Eine explizite Umwandlung in
double
wie hier ist nicht notwendig:Es genügt, die Konstante als
5000.0
(oder als5000d
) zu identifizieren: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).
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.