Quero usar uma track-bar para alterar a opacidade de um formulário's.
Este é o meu código:
decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;
Quando eu construo a aplicação, ele dá o seguinte erro:
Não é possível converter implicitamente o tipo
decimal
paraduplo
.
Eu tentei utilizar trans
e double
mas então o controle não't funciona. Este código funcionou bem em um projeto VB.NET passado.
Um elenco explícito para 'duplas' como este é't necessário:
double trans = (double) trackBar1.Value / 5000.0;
Identificar a constante como 5000.0
(ou como 5000d
) é suficiente:
double trans = trackBar1.Value / 5000.0;
double trans = trackBar1.Value / 5000d;
Uma resposta mais genérica para a pergunta genérica "Decimal vs Duplo?": Decimal para cálculos monetários para preservar a precisão, Duplo para cálculos científicos que não sejam afetados por pequenas diferenças. Como Double é um tipo nativo da CPU (a representação interna é armazenada na base 2), os cálculos feitos com Double têm melhor desempenho que Decimal (que é representado na base 10 internamente).