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

10.000 を挿入する場合は、データ型を数値 ( 5 ,3)として定義する必要があります。数値型宣言の最初の桁は、数値 (精度) の最大桁数です。10.000 の場合は 5 です。

10 進数と数値 (Transact-SQL)

10 進数 [ (p[ ,s] )] および数値 [ (p[ ,s] )]

...

p (精度) 小数点の左右両方に格納できる 10 進数の最大合計桁数。精度は、1 から最大精度 38 までの値でなければなりません。デフォルトの精度は 18 です。

s (位取り) 小数点の右側に格納できる 10 進数の最大桁数。Scale は 0 から p までの値でなければなりません。位取りは、精度が指定されている場合にのみ指定できます。デフォルトのスケールは 0 です。したがって、0 <= s <= p です。最大ストレージ サイズは、精度によって異なります。

于 2012-06-24T14:23:38.117 に答える
1

おそらく、あなたの remove chars は必要なことをしていませんか? 最後の質問については、次のような 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 に答える