我正在尝试对标签上的价格进行非常简单的百分比乘积。到目前为止,我非常简单:
private void richText10_BeforePrint(object sender, PrintEventArgs e)
{
string label7 = System.Convert.ToString(rptLabelForm.GetCurrentColumnValue("line_selling_price"));
decimal percentage = 80;
decimal price = System.Convert.ToDecimal(label7);
decimal total = price * (percentage / 100);
richText10.Text = total.ToString();
}
问题是,当我尝试使用实时数据运行报表时,出现错误提示
输入字符串的格式不正确。
我怀疑这是因为我要使用的字符串是开头为美元符号的双精度型。 (如果我自己运行,标签上确实会显示一个美元符号。)
我该如何解决?我如何从字符串中删除美元符号以执行简单的数学方程式?这就是我得到错误的原因吗?
答案 0 :(得分:6)
解析功能使您可以忽略货币符号。这样您就不必担心String.Replace每个货币符号。
var price = Decimal.Parse(label7, System.Globalization.NumberStyles.AllowCurrencySymbol | System.Globalization.NumberStyles.Number);
在使用货币值时,也可能不建议使用long
数据类型。如何将代码更改为此?
private void richText10_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
var label7 = System.Convert.ToString(rptLabelForm.GetCurrentColumnValue("line_selling_price"));
var percentage = 80M;
var price = Decimal.Parse(label7, System.Globalization.NumberStyles.AllowCurrencySymbol | System.Globalization.NumberStyles.Number);
var total = price * (percentage / 100M);
richText10.Text = total.ToString();
}