每当我在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();
}
答案 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);