如何在DB中存储十进制值?

时间:2013-06-17 04:56:36

标签: c# sql asp.net-mvc-4

添加到db时未获取小数点值。它会自动舍入到最接近的数字。

我已将其声明为

 public Decimal Amt { get; set; }

在我的主模型中它是

public int Add(Decimal Amt)
        {
            using (SqlConnection con = new SqlConnection())
            {
                con.ConnectionString = CONNECTION_STRING;
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = "INSERT INTO ledger(Amt)VALUES(@AMT)";                    
                    cmd.Parameters.AddWithValue("@AMT", Amt);
                    int modified = cmd.ExecuteNonQuery();
                    if (con.State == System.Data.ConnectionState.Open) con.Close();
                    return modified;
                }
            }
        }

在DB中,它的数据类型是Decimal(18,0)。

3 个答案:

答案 0 :(得分:5)

十进制(18,0)表示存储在小数点右侧的0位数。

来源:http://msdn.microsoft.com/en-us/library/ms187746.aspx

答案 1 :(得分:1)

十进制(18,0)中的第二个参数为0表示您不需要小数位。例如,如果你定义十进制(18,2),它将提供直到2位小数。

答案 2 :(得分:1)

将数据类型更改为(18,6)左右,以适合您为准,

十进制数据类型的第二部分显示“点”后您需要多少位数。在你的情况下它是'0',所以db将它四舍五入到最接近的整数。