数値を小数点以下 2 桁に切り詰める必要があります。これは基本的に、余分な桁を切り捨てることを意味します。
例えば:
2.919 -> 2.91
2.91111 -> 2.91
なんで?これは、特定の精度の数値を格納するときに SQL サーバーが行っていることです。たとえば、列が Decimal(8,2) で、数値 9.1234 を挿入/更新しようとすると、3 と 4 が切り捨てられます。
C# コードでもまったく同じことを行う必要があります。
私が考えることができる唯一の可能な方法は、次のいずれかです。
stringformatter を使用して小数点以下 2 桁のみを「出力」し、次に小数点以下に変換します。たとえば、次のようになります。
decimal tooManyDigits = 2.1345 decimal ShorterDigits = Convert.ToDecimal(tooManyDigits.ToString("0.##")); // ShorterDigits is now 2.13
文字列への変換と、別の文字列から 10 進数への変換が必要なため、これには満足できません。
Math.Truncate (整数のみを受け入れる) を使用すると、100 を掛けて切り捨て、100 で割ることができます。例:
decimal tooLongDecimal = 2.1235; tooLongDecimal = Math.Truncate(tooLongDecimal * 100) / 100;
また、tooLongDecimal が 0 の場合、0 による除算のエラーが発生するため、これにも満足していません。
確かに、より良い+簡単な方法があります! 助言がありますか?