0

每当我将值放入 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

4 回答 4

6

我认为 Math.Floor 是您正在寻找的:

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

Floor() 总是向下舍入。

于 2013-07-12T07:09:54.113 回答
0

如果您将 2 个数字相除并分配给一个整数,则结果将被截断(这是您想要的):

decimal d = 5000 / 2000;
int i = (int)d;
Console.WriteLine(i);
于 2013-07-12T06:58:11.747 回答
0

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

int stud = 5000/2000;

您将直接以整数形式获得输出(四舍五入)

于 2013-07-12T07:06:52.007 回答
0

我猜你只想要十进制的存根值,但不想四舍五入

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

Stub = Math.Floor(decimal.Parse(txtAmount.Text) / 2000);
于 2013-07-12T07:13:31.380 回答