パーセンテージの標準数値形式にスペースが含まれるのはなぜですか?

StackOverflow https://stackoverflow.com/questions/516549

  •  21-08-2019
  •  | 
  •  

質問

バックストーリー

大きな文字列の一部として Web ページ上に文字列として表示している 10 進数値がいくつかあります。これを出力するには、標準の数値形式文字列を使用して始めました。例えば。

myDecimal.ToString("P0")

0 後に P 小数点以下の桁が不要であることを示します。これは、私の出力が次のようになったという点で、これまでのところ機能します。

段階的最低会社拠出率 2 % に基づいて上記のように計算されます。

スペースの問題

場合によっては複数の行に分割されてしまうため、数値とパーセント記号の間のスペースを削除したいと考えています。また、私は数値と一致する % を好みます。

考えられる回避策

1.html/cssソリューション

を置くことができます <nobr> タグまたは <span style="white-space: nowrap;"> その周りに。しかし、それは気まずいので、どちらにしろ、私は % を数値に合わせたほうが見栄えが良いと思うので好みます。これは、この森の片隅でレポートに書く方法なので、Web ページでもそれを望んでいます。

2.カスタムフォーマット文字列

最終的にはカスタム数値書式文字列を使用することになります。

myDecimal.ToString("0%")

質問

パーセントを数値とパーセント記号の間にスペースを入れて表示する方が一般的ですか?これには驚かれるでしょうが、そうかもしれません。

伝える方法はありますか 標準の数値フォーマット文字列 スペースが要らないのですが?

を使用することに何かデメリットはありますか カスタム数値フォーマット文字列 を超えて 標準の数値フォーマット文字列?

わかりました - 認めます。それは複数の質問でした - すべてに答えた場合は追加クレジットが与えられます。

役に立ちましたか?

解決

見つめている http://www.nasdaq.com/ または http://finance.yahoo.com/ 数字の直後にスペースを入れずにパーセント記号を付けるのが一般的のようです:)

見て http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx

おそらく文化に依存します。デフォルト (不変) は 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) を実行することもできますが、サイト全体でそれを実行する必要があります。それに、正直に言うと、袖をまくってグローバリゼーションの価値観をいじることができるのに、どこが楽しいのでしょう?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top