.NET で double を文字列に変換するときに科学表記法を回避する
.NET 開発者は、double
値を文字列に変換する際、特に科学的記数法形式を避ける際に課題に遭遇することがよくあります。 この記事では、堅牢で効率的なソリューションを紹介します。
10 進精度の維持
非常に大きな数値や非常に小さな数値を含む広範囲の double
値を正確に表すには、十分な小数精度を維持することが重要です。 double
値の指数は -308 から 308 の範囲であり、小数点が最大 15 桁シフトされる可能性があるため、かなりの数の小数点以下の桁数に対応する必要があります。
カスタム数値形式文字列
次のカスタム書式文字列は、小数点以下 339 桁までを保持して目的の書式設定を実現します。
<code class="language-csharp">doubleFixedPoint = "0." + new string('#', 339);</code>
効率と使いやすさ
このアプローチは、書式設定と文字列操作が最適化されたアンマネージ CLR コードによって処理されるため、非常に効率的です。 使いやすさを高めるために、フォーマット文字列を定数として定義することを検討してください:
<code class="language-csharp">public static class FormatStrings { public const string DoubleFixedPoint = "0.###################################################################################################################################################################################################################################################################################################################################################"; }</code>
重要な注意事項: 真のロスレスではありません
このメソッドは、「r」書式指定子の表示丸めを効果的に模倣していますが、完全にロスレス変換ではありません。 ラウンドトリップ (データを失わずに文字列に変換し、double
に戻すこと) が最も重要な場合は、より正確な解決策として、「r」形式を採用するなどの代替アプローチを検討してください。
以上が科学表記法を使用せずに .NET で Double 値を文字列化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。