C# 更新条目时出错。xx.xxx超出范围

C# 更新条目时出错。xx.xxx超出范围,c#,asp.net,database,entity-framework,C#,Asp.net,Database,Entity Framework,我有一张有柱子的桌子 名称:变体_标记 数据类型:数字(4,3) 我试着给它加上10.000的价值 我得到了错误 更新条目时出错 10.000超出范围 不应该是这样,我还有其他数据类型相同的列和添加数字的过程相同,他们没有抱怨 守则: decimal strippedMarkRate = decimal.Round(0, 3); if (MarkUpTextBox.Text != string.Empty) strippedMarkRate = decim

我有一张有柱子的桌子

名称:变体_标记
数据类型:数字(4,3)

我试着给它加上10.000的价值

我得到了错误

更新条目时出错
10.000超出范围

不应该是这样,我还有其他数据类型相同的列和添加数字的过程相同,他们没有抱怨

守则:

decimal strippedMarkRate = decimal.Round(0, 3);
        if (MarkUpTextBox.Text != string.Empty)
            strippedMarkRate = decimal.Round(decimal.Parse(toolbox.removeChars(MarkUpTextBox.Text)), 3);

variant_markup = strippedMarkRate;

toolbox.removeChars函数只是从框中删除任何不是数字或小数点的字符,有没有可能用正则表达式实现这一点?

也许您的删除字符没有达到您需要的效果?关于你的最后一个问题,用foreach语句删除不允许的字符可能会更快,如下所示:

StringBuilder sb = new StringBuilder();

foreach(char c in value)
{
      if(char.IsDigit(c) || c == '.')
      {
          sb.append(c);
      }
}

return sb.ToString();

如果要插入10.000,则需要将数据类型定义为数字(5,3)。数字类型声明中的第一个数字是数字中的最大位数(精度)。在10.000的情况下,有5个

十进制[(p[,s])]和数字[(p[,s])]

p(精度)小数点左侧和右侧可存储的最大小数位数总数。精度 必须是从1到最大精度38之间的值。这个 默认精度为18

s(刻度)小数点右侧可存储的最大小数位数。比例必须是从0到p的值。 仅当指定了精度时,才能指定比例。默认值
标度为0;因此,0您的代码不涉及
variant\u markup
,因此我有点困惑问题出在哪里。如果它没有执行预期的操作,那么在尝试解析为十进制时,我不会遇到异常吗????