如何将Number.Double Access列值转换为Decimal?
由于小数对于货币值更好(请参阅David的答案),所以我试图将我的代码更改为使用小数而不是double。 IOW,我改变了这一点:
public class InventoryItem
{
. . .
public double UnitCost { get; set; }
public double UnitList { get; set; }
public double OpenQty { get; set; }
. . .
...对此:
public class InventoryItem
{
. . .
public decimal UnitCost { get; set; }
public decimal UnitList { get; set; }
public decimal OpenQty { get; set; }
. . .
但是,在其他代码中,我感到非常悲伤,即“无法隐式地将类型'double'转换为'decimal'。在此代码中存在明确的转换(是否缺少转换?
// I changed "double openQty" to "decimal openQty"
decimal openQty = (oleDbD8aReader["open_qty"] is DBNull
? 0.00
: Convert.ToDouble(oleDbD8aReader["open_qty"]));
因此,我尝试将“Convert.ToDouble()”更改为“Convert.ToDecimal()”,但由于“double”和“decimal”之间没有隐式转换,无法确定条件表达式的类型。
正在检索的数据来自MS Access,其中讨论的列的类型是Number,更具体地说,是Double(Number.Double,因为它是)。
我如何强制/将Access Double转换为“更好”的十进制类型?
问题不在于“.ToDecimal()”,而是在“0.00”
这个:
decimal openQty = (oleDbD8aReader["open_qty"] is DBNull
? 0.00
: Convert.ToDecimal(oleDbD8aReader["open_qty"]));
......必须变成这样:
decimal openQty = (oleDbD8aReader["open_qty"] is DBNull
? 0.00M
: Convert.ToDecimal(oleDbD8aReader["open_qty"]));
(只需将“M”附加到“0.00”就可以封闭编译器批评者。
链接地址: http://www.djcxy.com/p/89387.html上一篇: How can I convert a Number.Double Access column value to a Decimal?
下一篇: Multiple types were found that match the controller named 'Home'