文化に依存しない小数点以下の数え方
10 進数値の小数点以下の桁数を正確に決定することは、多くのプログラミング コンテキストにおいて重要です。 多様な文化的環境を扱う場合、小数点の区切り文字が異なる可能性があるため、課題が生じます。 この記事では、この問題に対する堅牢で文化に依存しない解決策を紹介します。
文字列操作と小数点区切り文字を使用した最初の試みは、異なるシステム間では信頼性が低いことが判明しました。 より信頼性の高い方法では、10 進数値の内部表現を利用します。
解決策: Decimal の内部表現を活用する
重要なのは、decimal.GetBits
メソッドを使用することです。このメソッドは、10 進値の 2 進構成要素を表す整数配列を返します。 この配列の 4 番目の要素 (decimal.GetBits(argument)[3]
) には、小数部に使用される 2 進数の数という重要な情報が含まれています。
この 2 進数を小数点以下の桁数に変換するには、BitConverter.GetBytes
を使用します。具体的には、decimal.GetBits
の 4 番目の要素から派生したバイト配列の 3 番目のバイト (インデックス 2) には、その下位 4 ビットでエンコードされた小数点以下の桁数が含まれます。
実装:
この文化に依存しないアプローチを実装する方法は次のとおりです。
<code class="language-csharp">decimal argument = 123.456m; int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];</code>
以上が異なる文化間で 10 進値の小数点以下の桁を確実に数えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。