我想将十进制变量“trans”分配给双变量“this.Opacity”。
decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;
当我构建应用程序时,会出现以下错误:
无法将类型decimal隐式转换为double
我想将十进制变量“trans”分配给双变量“this.Opacity”。
decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;
当我构建应用程序时,会出现以下错误:
无法将类型decimal隐式转换为double
当前回答
请尝试以下代码:
十进制值
decimal d1 = 3234.3434m;
转换为双精度
double r1 = Decimal.ToDouble(d1);
其他回答
“不透明度”属性为双重类型:
double trans = trackBar1.Value / 5000.0;
this.Opacity = trans;
或者简单地:
this.Opacity = trackBar1.Value / 5000.0;
or:
this.Opacity = trackBar1.Value / 5000d;
请注意,我使用5000.0(或5000d)强制进行二次除法,因为trackBar1.Value是整数,它将执行整数除法,结果将是整数。
不需要像这样显式转换为double:
double trans = (double) trackBar1.Value / 5000.0;
将常数确定为5000.0(或5000d)就足够了:
double trans = trackBar1.Value / 5000.0;
double trans = trackBar1.Value / 5000d;
OG事实:Double类型表示比Decimal更广泛的可能值。
铸造为双重
decimal trans = trackBar1.Value / 5000m;
this.Opacity = (double) trans;
类型转换
decimal trans = trackBar1.Value / 5000m;
this.Opacity = decimal.ToDouble(trans);
无显式强制转换/转换
在这种情况下,在常量5000d或“.0”5000.0的末尾添加“d”将标识所需的类型。当运算中没有常数时,只需将十进制变量乘以1.0或1d。
最佳解决方案是:
this.Opacity = decimal.ToDouble(trackBar1.Value/5000);
您应该使用5000.0而不是5000。