我想将十进制变量“trans”分配给双精度变量“this。不透明”。
decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;
当我构建应用程序时,它给出了以下错误:
无法将十进制类型隐式转换为双精度
网友回答:
对于通用问题“十进制与双精度?”的更通用答案:
十进制用于货币计算以保持精度。双精度用于不受微小差异影响的科学计算。由于 Double 是 CPU 的本机类型(内部表示形式存储在基数 2 中),因此使用 Double 进行的计算的性能优于十进制(在内部以 10 为基数表示)。
网友回答:
不需要显式强制转换来如下所示:double
double trans = (double) trackBar1.Value / 5000.0;
将常量标识为(或标识为 )就足够了:5000.0
5000d
double trans = trackBar1.Value / 5000.0;
double trans = trackBar1.Value / 5000d;
网友回答:
您的代码在 VB.NET 中运行良好,因为它隐式执行任何强制转换,而 C# 同时具有隐式和显式转换。
在 C# 中,从十进制到双精度的转换是显式的,因为您会失去准确性。例如,1.1 不能准确地表示为双精度数,但可以表示为小数(请参阅“浮点数 – 比您想象的更不准确”了解原因)。
在 VB 中,编译器为您添加了转换:
decimal trans = trackBar1.Value / 5000m;
this.Opacity = (double) trans;
这必须在 C# 中明确说明,但可以通过 VB 更“宽容”的编译器来暗示。(double)
模板简介:该模板名称为【如何在 C# 中将十进制转换为双精度?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。