输入字符串不在c#DataGridView中的正确格式错误

时间:2013-12-28 13:36:11

标签: c# datagridview

'我在以下代码中收到此错误:

string QtyVal = MatCompDtlDataGridView.CurrentCell.Value.ToString();
decimal Result = (Convert.ToDecimal(QtyVal)) / 999;
if (Result == 0)
{
    MessageBox.Show("Quantity value can not be null");
}

3 个答案:

答案 0 :(得分:1)

您没有完全告诉我们QtyVal的价值是什么,但您可以先使用Decimal.TryParse方法检查您的字符串是否可以转换为十进制。

  

将数字的字符串表示形式转换为Decimal   等效使用指定的样式和特定于文化的格式。一个   返回值表示转换是成功还是失败。

string QtyVal = MatCompDtlDataGridView.CurrentCell.Value.ToString();
decimal d;
if(Decimal.TryParse(QtyVal, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d))
{
   d= (Convert.ToDecimal(QtyVal)) / 999;
}
  

0000或00.00

两个

Convert.ToDecimal(0000)
Convert.ToDecimal(00.00)

对我有用。我的CultureInfo.CurrentCulture tr-TR.NumberFormat.NumberGroupSeparatorNumberGroupSeparator,很可能你的文化没有点{{1}}但是因为你没有告诉我们你的文化是什么,我们永远不知道。

答案 1 :(得分:0)

您需要将(Convert.ToDecimal(QtyVal)) / 999转换为小数:

 decimal result = (decimal)((Convert.ToDecimal(QtyVal)) / 999);

答案 2 :(得分:0)

我检查了QtyVal变量中的值,对于0000和00.00都是“”,所以不是将它转换为十进制,而是在if条件下将其检查为null并且它有效。