0

サポートしているアプリケーションで、データベースから返される値がレポートに表示されるときに、「算術演算によってオーバーフローが発生しました」という例外がときどき発生する問題をデバッグしています。提示されている値は、C#の小数としてデータベースから取得されていると確信しています。

ただし、レポートでは、表示フィールドに数値タイプがあります。ここで、変換の考慮事項の下で、floatやdoubleなど、返される値のサイズを処理できない小さな型にキャストすると、オーバーフロー例外が発生する可能性があることを読みました。

悲しいことに、Googleはこれに失敗しました。「CrystalReports Numberデータ型のサイズ」を検索すると、CrystalReports番号のデータ型について何も教えてくれないあいまいな結果が得られました。

それで、ここで質問をします-Crystal Reports NumberはC#数値タイプとどのように関連していますか?それとも彼らは関係していますか?

4

1 に答える 1

2

次の関連する回答によると、CrystalReportsの「数値」タイプはvarcharまたはnvarcharとして保存されているようです。CrystalReports2008列の最小値と最大値。あなたの場合、これが本当かどうかはわかりません。CRデータ型の検索が難しいことに同意します。CRがデータを格納する方法に関する適切なドキュメントや、格納する数値の精度と規模に関する情報を見つけることができませんでした。

小数の精度は有効数字28〜29桁で、.MaxValue定数は79,228,162,514,264,337,593,543,950,335です。私は(願っています!)これはあなたのニーズには十分すぎると思いますが、問題はCRの精度が多かれ少なかれ、一部の値が必ずしも範囲外ではない場合でも、宛先に対して高すぎる精度で表されることである可能性があります処理する。

たとえば、Oracleから10進数への問題に関するこの質問を参照してください。また、大きな10進値から0.5を引くことについて、この質問に興味深い事例があります。

ご覧のとおり、データ型間の変換はときどきイライラすることがあります。doubleなどのレポートを生成する前に、より小さなデータ型を試してみることをお勧めします。

于 2012-10-04T21:27:33.347 に答える