2016-05-24 13 views
0

amount decimal (19, 9)と定義されているデータベース列があります。データ型数値を10進数に変換する際のエラー

UIで、それは私がデータベースに保存しようとしていたときに今、私はエラーを取得し、ユーザーがその後の値を入力し、内部でそれが1000

を掛けますどんなユーザーが値を入力することができますフリーテキストであり、今、内部でそれは千

を掛けます私は 78654323として値を入力した場合

を10進数に

変換エラーデータ型の数値、

78654323 * 1000 = 78654323000 

と保存時にこのエラーが発生します。どうして ?

範囲のテキストボックスには、どのような検証/データ注釈を付ける必要がありますか?

+0

小数点(19,9)の意味は10桁の数字と9桁の小数点の桁であるためです。 78654323000が値9999999999を超えています。999999999 –

+0

ok。テキストボックスにはどのような検証が必要ですか? – user662285

+1

は範囲の検証を使用し、0〜9999999の値のみを受け入れます。 –

答えて

0

妥当性検査は、1000で乗算した後合計19桁になるようにする必要があります.19桁を超えてはなりません(小数点以下は&より前です)。それにはいくつかの計算作業が必要です。結果に基づいて検証を提供する必要があります。

結果がデータベースに送られると、78654323000.00000000として格納されます。これは10進数(19,9)ではなく小数点(20,9)に適しています。したがって、10進数の前の1桁は乗算後であってはなりません。

1

と仮定すると、これは(あなたがそう言っていない - しかし、それはそれのように見える)SQL Serverの次のとおりです。

あなたは、データベースのタイプdecimal(19,9)であるように、あなたのamount列を定義しています。あなたはではありません。は、小数点の前に19桁と9桁を得ています(これは、多くのプログラマーがこの表記法を意味すると思われる)。したがって、あなたが 19の数字というの

  • を取得

    • 9桁は小数点

    後があると、あなたは:

    本当に意味されることです10桁小数点の前にします。これ

    千によって78654323のご入力された値を乗算すると、あなたは11桁(小数点の前)を持つ値78654323000で終わる、とあなたができない安全なこの値。

    小数点の前に使用可能な桁数を増やす必要があります(小数点より前に16桁の数字を入力してください)。たとえば、decimal(25,9)を使用します。

  • 関連する問題