【发布时间】:2014-01-25 19:23:10
【问题描述】:
我正在开发一种库存软件,并且也在按百分比和金额计算折扣。
- 表示当我输入百分比金额时,它会自动转换为价格#
- 当我输入价格时,它会自动转换为 % #
我用来将价格转换为 % 的代码是:
if(txtDiscount.Text == "" || txtGrandTotal.Text == "")
{
MessageBox.Show("Please Enter amount in Grand Total",Application.ProductName,MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
// double percent;
double grandTotal;
double per;
double txDiscount;
//percent = Convert.ToInt32(txtPercant.Text);
grandTotal = Convert.ToInt32(txtGrandTotal.Text);
txDiscount = Convert.ToInt32(txtDiscount.Text);
per = txDiscount / grandTotal * 100;
//per = percent / 100 * grandTotal;
if (per % 3 != 0)
per = (per - per % 3) + 3;
txtPercant.Text = Convert.ToString(per);
................
................
................
................
................
现在让我们假设如果我输入的金额是“25”,那么它计算的百分比是“2.77777777777778”。我想将其限制为点后三位小数,就像我想成为“2.778”或任何我想在点后仅显示 3 位小数的方式,谁能帮助我以哪种方式做到这一点?任何建议将不胜感激!
编辑:
从价格到百分比代码的转换是:
private void txtDiscount_Leave(object sender, EventArgs e)
{
if(txtDiscount.Text == "" || txtGrandTotal.Text == "")
{
MessageBox.Show("Please Enter amount in Grand Total",Application.ProductName,MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
// double percent;
double grandTotal;
double per;
double txDiscount;
//percent = Convert.ToInt32(txtPercant.Text);
grandTotal = Convert.ToInt32(txtGrandTotal.Text);
txDiscount = Convert.ToInt32(txtDiscount.Text);
per = txDiscount / grandTotal * 100;
//per = Math.Round(per, 3);
per = Math.Truncate(per * 1000) / 1000;
txtPercant.Text = Convert.ToString(per);
double lblgrandTotal = 0.0;
double Disconunt = 0.0;
double netTotal = 0.0;
lblgrandTotal = Convert.ToDouble(txtGrandTotal.Text);
Disconunt = Convert.ToDouble(txtDiscount.Text);
netTotal = grandTotal - Disconunt;
//netTotal = Convert.ToInt32(grandTotal) - Convert.ToInt32(Discount);
lblNetTotal.Text = Convert.ToString(netTotal);
}
}
从 % 到价格代码的 Cobersion 是:
private void textBox1_Leave(object sender, EventArgs e)
{
if (txtPercant.Text == "")
{
MessageBox.Show("Please Enter value in Percenent", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
double percent;
double grandTotal;
double per;
percent = Convert.ToDouble(txtPercant.Text);
grandTotal = Convert.ToDouble(txtGrandTotal.Text);
per = percent / 100 * grandTotal;
txtDiscount.Text = Convert.ToString(per);
double lblgrandTotal = 0.0;
double Disconunt = 0.0;
double netTotal = 0.0;
lblgrandTotal = Convert.ToDouble(txtGrandTotal.Text);
Disconunt = Convert.ToDouble(txtDiscount.Text);
netTotal = grandTotal - Disconunt;
//netTotal = Convert.ToInt32(grandTotal) - Convert.ToInt32(Discount);
lblNetTotal.Text = Convert.ToString(netTotal);
}
}
但我面临的问题是我正在将 % 转换为价格和 Vise Versa,现在如果我在价格中添加 12,它会显示 12.33%,当我输入 12.33% 时,它会将其转换回 11.997Price,这不是应该是一样的……应该是 12 而不是 11.997……真的很困惑……!!
注意:
按价格,我的意思是我正在计算总计的折扣百分比和价格折扣,这意味着如果我加上 12%,那么它会计算总计的价格折扣,如果我输入价格金额,那么它会计算总计的折扣百分比总计
【问题讨论】:
-
Math.Round(2.77777777777778, 3) -
我想转换每个变量中的值而不是实际值我不知道用户每次输入哪个值兄弟@L.B
-
@L.B 谢谢帮我解决了:)
-
@L.B 这里又出现了一个问题,当我在 Price 中输入 12 时,它显示为 12.33%,当我输入 12.33% 时,它会将其转换回 11.997RS,这与应该是不一样的... :/
标签: c# .net visual-studio types