对开头带有美元符号($)的字符串进行数学运算

时间:2018-07-23 18:06:08

标签: c#

我正在尝试对标签上的价格进行非常简单的百分比乘积。到目前为止,我非常简单:

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();
}

问题是,当我尝试使用实时数据运行报表时,出现错误提示

  

输入字符串的格式不正确。

我怀疑这是因为我要使用的字符串是开头为美元符号的双精度型。 (如果我自己运行,标签上确实会显示一个美元符号。)

我该如何解决?我如何从字符串中删除美元符号以执行简单的数学方程式?这就是我得到错误的原因吗?

1 个答案:

答案 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();
}