パーセンテージの標準数値形式にスペースが含まれるのはなぜですか?
-
21-08-2019 - |
質問
バックストーリー
大きな文字列の一部として Web ページ上に文字列として表示している 10 進数値がいくつかあります。これを出力するには、標準の数値形式文字列を使用して始めました。例えば。
myDecimal.ToString("P0")
の 0
後に P
小数点以下の桁が不要であることを示します。これは、私の出力が次のようになったという点で、これまでのところ機能します。
スペースの問題段階的最低会社拠出率 2 % に基づいて上記のように計算されます。
場合によっては複数の行に分割されてしまうため、数値とパーセント記号の間のスペースを削除したいと考えています。また、私は数値と一致する % を好みます。
考えられる回避策
1.html/cssソリューションを置くことができます <nobr>
タグまたは <span style="white-space: nowrap;">
その周りに。しかし、それは気まずいので、どちらにしろ、私は % を数値に合わせたほうが見栄えが良いと思うので好みます。これは、この森の片隅でレポートに書く方法なので、Web ページでもそれを望んでいます。
最終的にはカスタム数値書式文字列を使用することになります。
myDecimal.ToString("0%")
質問
パーセントを数値とパーセント記号の間にスペースを入れて表示する方が一般的ですか?これには驚かれるでしょうが、そうかもしれません。
伝える方法はありますか 標準の数値フォーマット文字列 スペースが要らないのですが?
を使用することに何かデメリットはありますか カスタム数値フォーマット文字列 を超えて 標準の数値フォーマット文字列?
わかりました - 認めます。それは複数の質問でした - すべてに答えた場合は追加クレジットが与えられます。
解決
見つめている http://www.nasdaq.com/ または http://finance.yahoo.com/ 数字の直後にスペースを入れずにパーセント記号を付けるのが一般的のようです:)
おそらく文化に依存します。デフォルト (不変) は n % です。
他のヒント
これは私にとってはうまくいきました:
System.Globalization.CultureInfo newCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.NumberFormat.PercentPositivePattern = 1; // Avoid putting a space between a number and its percentage
System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
デフォルトの PercentPositivePattern 値を変更するには、新しい CultureInfo オブジェクトを作成し、それをデフォルト (おそらく「en-us」) の代わりに使用する必要があります。(あるいは、Web.config でカルチャとして「en-za」を指定することもできますが、明らかな理由により、これはお勧めしません。)
に素晴らしい投稿があります ASPフォーラム これらすべてを行う方法を説明します。3 番目の投稿者 (m0brien) が書いたコードを参照してください。彼の正確なコードをマスター ページの Page_Load メソッドにコピーしたので、もう考える必要はありません。
もちろん、いつでも String.Format().Replace(" ", String.Empty) を実行することもできますが、サイト全体でそれを実行する必要があります。それに、正直に言うと、袖をまくってグローバリゼーションの価値観をいじることができるのに、どこが楽しいのでしょう?