Je veux utiliser une barre de contrôle pour modifier l'opacité d'un formulaire.
Voici mon code :
decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;
Lorsque je construis l'application, elle donne l'erreur suivante :
Impossible de convertir implicitement le type
decimal
endouble
.
J'ai essayé d'utiliser trans
et double
mais le contrôle ne fonctionne pas. Ce code fonctionnait bien dans un projet VB.NET antérieur.
Une conversion explicite en double
comme celle-ci n'est pas nécessaire :
double trans = (double) trackBar1.Value / 5000.0;
Identifier la constante comme 5000.0
(ou comme 5000d
) est suffisant :
double trans = trackBar1.Value / 5000.0;
double trans = trackBar1.Value / 5000d;
Une réponse plus générique à la question générique "Decimal vs Double?" : Décimal pour les calculs monétaires afin de préserver la précision, Double pour les calculs scientifiques qui ne sont pas affectés par de petites différences. Comme Double est un type natif du CPU (la représentation interne est stockée en base 2), les calculs effectués avec Double sont plus performants que ceux effectués avec Decimal (qui est représenté en base 10 en interne).