0

我有一个带有列的表

名称:variant_markup
数据类型:数字(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 函数只是从框中删除任何不是数字或小数点的字符,有没有办法通过正则表达式来做到这一点?

4

2 回答 2

1

也许您的删除字符没有做您需要的事情?至于你最后一个问题,使用这样的 foreach 语句删除不允许的字符可能会更快:

StringBuilder sb = new StringBuilder();

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

return sb.ToString();
于 2012-06-24T14:06:51.390 回答
1

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

十进制和数字 (Transact-SQL)

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

...

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

s(刻度) 小数点右侧可以存储的最大小数位数。比例必须是从 0 到 p 的值。仅当指定精度时才能指定比例。默认比例为 0;因此,0 <= s <= p。最大存储大小因精度而异。

于 2012-06-24T14:23:38.117 回答