ホームページ >バックエンド開発 >C++ >C#で倍精度値を四捨五入せずに特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?

C#で倍精度値を四捨五入せずに特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-27 12:15:111006ブラウズ

How to Truncate, Not Round, Double Values to a Specific Number of Decimal Places in C#?

C# での丸めなしの Double 値の切り捨て

C# で倍精度浮動小数点数を文字列に変換する場合、次のようにすることができます。特定の小数点以下の桁数でフォーマットする必要がある場合があります。ただし、String.Format("{0:0.00}") を使用すると丸めが発生する可能性があり、正確な切り捨てが必要な特定のシナリオでは望ましくありません。

この問題に対処するには、Math.Truncate を組み合わせて使用​​します。 () と NumberFormatInfo.CurrentInfo を使用して、四捨五入せずに切り捨てを実現し、カルチャに依存した状態を維持します。 formatting.

解決策:

  1. Math.Truncate() を使用して double 値を切り詰めます:
double myDoubleValue = 50.947563;
double x = Math.Truncate(myDoubleValue * 100) / 100;

この操作値を 100 倍し、小数点以下を切り捨ててから、 100 で割って元のスケールに戻します。

  1. NumberFormatInfo.CurrentInfo を使用して切り捨てられた値を書式設定します:
string s = x.ToString("N2", NumberFormatInfo.CurrentInfo);

この書式指定子は「N」書式文字列を使用しますこれには、末尾にパーセント記号が付いている通貨の書式設定が含まれます。 NumberFormatInfo.CurrentInfo は、書式設定が現在のカルチャ設定に従うことを保証します。

結果:

上記のメソッドを使用すると、double 値の文字列表現を正確に取得します。小数点以下 2 桁は四捨五入なしで表示されます。たとえば、値 50.947563 は、50.95 に切り上げられずに 50.94 に切り捨てられます。

以上がC#で倍精度値を四捨五入せずに特定の小数点以下の桁数に切り捨てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。