【发布时间】:2017-02-21 09:10:47
【问题描述】:
我有一个 numericUpDown 并将属性的小数位设置为 3,所以它变成了 0.000
这里是代码
Decimal inputGrossWeight = numGrossWeight.Value;
if (inputGrossWeight = 0.000)
{
MessageBox.Show("Gross Weight must be filled!");
}
else
{
Data newData = new Data();
newData.grossWeight = inputGrossWeight;
}
注意:
numGrossWeight 是 numericUpDown 的名称
grossWeight 是我数据库中的列名
我将它存储到数据类型为浮点数的数据库中
所以当用户输入 2.365 时,它也会存储到数据库 2.365 中。
我尝试了很多方法,但它给了我错误:
无法将类型“十进制”隐式转换为“双精度”。显式 存在转换(您是否缺少演员表?)
double类型的文字不能隐式转换为类型 '十进制';使用“M”后缀来创建这种类型的文字
我的代码有什么问题?
【问题讨论】:
-
第一个问题:当你想要
==时,你正在使用=。第二个问题:您正在使用0.000这是一个double文字;你想要0.000m所以它是一个decimal文字,正如第二个编译器错误告诉你的那样。 (不清楚是哪一行导致了第一个错误...) -
错误信息告诉你究竟出了什么问题
-
错误清楚地说明了该怎么做,不是吗? “存在显式转换(您是否缺少演员表?)”
-
第三个问题,如果数据类型为浮点数,则期望 2.365 作为十进制数将准确在数据库中存储为 2.365。
-
当我重新检查我的实体模型时,我才意识到,grossWeight 的签名类型为 double,但在我的数据库中,grossWeight 列的签名数据类型为 float。
标签: c# database winforms numericupdown