如何不在c#.net中舍入小数

时间:2013-07-12 06:55:08

标签: c# sql-server-2008

每当我在TextBox中放置值时,我希望我的输出不会被舍入。例如5000/2000我想要显示的输出是2,但它显示3。

这是我的代码

private void InsertReceipt()
{
    decimal Stub;

    Stub = decimal.Parse(txtAmount.Text) / 2000;

    SqlCommand cmd = new SqlCommand();
    cmd.Connection = cn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "INSERT INTO Ticket(CustomerID, Date, Store, Amount, NoStub)" + "VALUES (@CustomerID, @Date, @Store, @Amount, @NoStub) ";
    cmd.Parameters.AddWithValue("@CustomerID", txtCustomerID.Text);
    cmd.Parameters.AddWithValue("@Date", dtpDate.Value.Date.ToString());
    cmd.Parameters.AddWithValue("@Store", txtStore.Text);
    decimal amount = decimal.Parse(txtAmount.Text);
    cmd.Parameters.AddWithValue("@Amount", amount);
    cmd.Parameters.Add("@NoStub", SqlDbType.Decimal).Value = Stub;

    cmd.ExecuteNonQuery();
}

4 个答案:

答案 0 :(得分:6)

我认为Math.Floor就是你要找的东西:

Stub = Math.Floor(decimal.Parse(txtAmount.Text) / 2000);

Floor()总是向下舍入。

答案 1 :(得分:0)

如果你划分2个数字并分配给一个整数,结果将被截断(这就是你想要的):

decimal d = 5000 / 2000;
int i = (int)d;
Console.WriteLine(i);

答案 2 :(得分:0)

如果您希望输出为整数,那么为什么使用十进制数据类型???

int stud = 5000/2000;

您将直接在Integer(圆形)

中获得输出

答案 3 :(得分:0)

我猜你只想要十进制的Stub值,但不想要舍入

为此,您可以使用Use Math.Floor,它返回小于或等于指定数字的最大整数。

Stub = Math.Floor(decimal.Parse(txtAmount.Text) / 2000);