请帮我识别我的C#代码(WPF,事件处理程序)中的问题:
private void Discount5Btn_Click(object sender, RoutedEventArgs e)
{
decimal catPr;
decimal salePr;
string catPrStr;
catPrStr = PriceCatTBox.Text;
catPr = decimal.Parse(catPrStr);
salePr = decimal.Multiply(catPr, 0.95m);
SalePriceTBox.Text = (salePr).ToString("0000.00");
}
我无法正常工作 - 调试器在catPr = decimal.Parse(catPrStr);
上显示错误。在另一个地方非常相似的代码有效。我是否正确采用字符串十进制转换进行算术运算?
修改(已添加)
很抱歉没有指定 catPrStr
值,它来自以下代码中的文本框(在另一个事件处理程序中):
dlg.PriceCatTBox.Text = "2300.00";
....
然后如上所述:
catPrStr = PriceCatTBox.Text;
答案 0 :(得分:3)
我采用这种方法是对的 字符串十进制转换 算术运算?
我会设置与模型的双向绑定来存储您的小数值。这将允许您直接访问它们而不是解析字符串。这也将解决您的错误。
答案 1 :(得分:3)
您确定您的文化(区域设置)设置没有干扰吗?如果catPrStr
始终处于编辑问题中显示的不变文化中,则可以使用decimal.TryParse(catPrStr, CultureInfo.InvariantCulture);
强制使用该文化。如果未指定区域性,则在当前系统区域中完成解析,例如,可以使用逗号作为小数分隔符。
答案 2 :(得分:1)
我们无法帮助您,因为我们不知道catPrStr
的价值,您正在从String
转换为Decimal
,并且很可能正在转换的字符串的值是不正确。
答案 3 :(得分:1)
decimal.TryParse(catPrStr, out catPr);
并处理它的bool返回,以确保您有合理的价值来处理。