C# での丸めなしの Double 値の切り捨て
C# で倍精度浮動小数点数を文字列に変換する場合、次のようにすることができます。特定の小数点以下の桁数でフォーマットする必要がある場合があります。ただし、String.Format("{0:0.00}") を使用すると丸めが発生する可能性があり、正確な切り捨てが必要な特定のシナリオでは望ましくありません。
この問題に対処するには、Math.Truncate を組み合わせて使用します。 () と NumberFormatInfo.CurrentInfo を使用して、四捨五入せずに切り捨てを実現し、カルチャに依存した状態を維持します。 formatting.
解決策:
double myDoubleValue = 50.947563; double x = Math.Truncate(myDoubleValue * 100) / 100;
この操作値を 100 倍し、小数点以下を切り捨ててから、 100 で割って元のスケールに戻します。
string s = x.ToString("N2", NumberFormatInfo.CurrentInfo);
この書式指定子は「N」書式文字列を使用しますこれには、末尾にパーセント記号が付いている通貨の書式設定が含まれます。 NumberFormatInfo.CurrentInfo は、書式設定が現在のカルチャ設定に従うことを保証します。
結果:
上記のメソッドを使用すると、double 値の文字列表現を正確に取得します。小数点以下 2 桁は四捨五入なしで表示されます。たとえば、値 50.947563 は、50.95 に切り上げられずに 50.94 に切り捨てられます。
以上がC#で倍精度値を四捨五入せずに特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。