如何将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'