假设 dis.text = 2,prc.text = 100,我正在使用这些代码。应该是 net_prc.text = 98.但是它给了我-100.有人能告诉我为什么吗?,我怎样才能得到正确的结果 折扣百分比??
private void net_prcTabChanged(object sender, EventArgs e)
{
int d;
int di;
int i;
d = Convert.ToInt32(dis.Text);
i = Convert.ToInt32(prc.Text);
di = -((d / 100) * i) + i;
net_prc.Text = di.ToString();
}
尝试 (d / 100.0) 强制其使用浮点运算
di
的数据类型更改为
float
di = (d * 100) / i;
private void net_prcTabChanged(object sender, EventArgs e)
{
double d;
double di;
double i;
d = Convert.ToDouble(dis.Text);
i = Convert.ToDouble(prc.Text);
di = -((d * 100.0) / i ) + i;
net_prc.Text = di.ToString();
}
discountedPrice= currentPrice * 0.95;
d / 100
,是整数除法,它返回一个整数,可能是
0
(零)。您的示例确实属于这种情况d = 2
。添加:
如果您确实想用整数执行此操作(而不是像许多其他答案建议的那样更改为 decimal
或
double
),请考虑更改子表达式((d / 100) * i)
进入
((d * i) / 100)
因为它会给你更好的精度来进行最后的除法运算。对于示例中的数字
d=2
和
i=100
,第一个子表达式将给出 0*100
或 0
,而更改后的子表达式将产生 200/100
,即 2
。但是,您不会四舍五入到最接近的整数;相反,您将被截断(无论小数部分是否接近 1
,小数部分都会被丢弃)。