当试图计算折扣价格返回0时,这是错误的c#Asp.net

当试图计算折扣价格返回0时,这是错误的c#Asp.net,c#,asp.net,C#,Asp.net,当我试图计算折扣价格时,它返回0,这是错误的。 总共是100英镑,折扣率是10%。我确信这个公式,但它一直返回0 我的c#代码: 在这里: 使用整数除法将Int16(10)除以Int32(100),得到0。引自: 当你除以两个整数时,结果总是一个整数。例如,7/3的结果是2。要确定7/3的余数,请使用余数运算符(%)。若要获得作为有理数或分数的商,请给出被除数或除数类型float或double类型 我建议您使用,而不是浮动或双精度,因为十进制更适合于货币值: (Convert.ToDecimal

当我试图计算折扣价格时,它返回0,这是错误的。 总共是100英镑,折扣率是10%。我确信这个公式,但它一直返回0

我的c#代码:

在这里:

使用整数除法将
Int16
(10)除以
Int32
(100),得到
0
。引自:

当你除以两个整数时,结果总是一个整数。例如,7/3的结果是2。要确定7/3的余数,请使用余数运算符(%)。若要获得作为有理数或分数的商,请给出被除数或除数类型float或double类型

我建议您使用,而不是浮动或双精度,因为十进制更适合于货币值:

(Convert.ToDecimal(TxtDiscountPER.Text)) / 100

除法将返回一个十进制值。您正在将除法转换为
Int16
。因此,它将始终返回一个
INT
值,该值为0

返回的
Convert.ToInt16(txtdressionper.Text)
?可能的情况。将调试器放在事件处理程序TXTDeportPer_TextChanged中,并检查文本框的文本属性中的值。我希望你能为你的问题找到一个解决方案。你可以除以100.0,而不是100,然后得到结果。被整数除的结果是整数,如果除数更大,结果显然是0。如果除以100.0,可以得到浮点结果。您可以从中提取结果到正确的小数位。重新打开问题。到的链接很有用,但我不认为它是重复的。在一种情况下,“整数除法”是答案,在另一种情况下,这就是问题所在。@rawan:为什么<代码>10/100=0.1。不能以整数形式存储
0.1
。如果需要,可以将结果转换回整数。如果只是关于格式化,请使用适当的。
(Convert.ToInt16(TxtDiscountPER.Text)) / 100
(Convert.ToDecimal(TxtDiscountPER.Text)) / 100