11

バックストーリー

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

myDecimal.ToString("P0")

0後は、小数点P以下の桁数は必要ないと言っています。これは、私の出力が次のようになってしまうという点で、機能します。

2%の段階的最小企業貢献率に基づいて上記のように計算されます

スペースの問題

数字とパーセント記号の間のスペースを取り除きたいのですが、場合によっては行に分割されてしまうことがあります。そしてまた、私は%が数に突き当たるのを好みます。

考えられる回避策

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

<nobr>タグやその<span style="white-space: nowrap;">周りに貼ることができます。しかし、それはぎこちなく感じます。とにかく、私はそれがより良く見えると思うので、%が数字のすぐ上に突き当たるのを好みます。それは私たちが森のこの首のレポートにそれを書く方法です、それでそれは私がウェブページでそれを望む方法です。

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

私はカスタム数値フォーマット文字列を使用することになります、例えば

myDecimal.ToString("0%")

質問

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

標準の数値形式の文字列にスペースが不要であることを伝える方法はありますか?

標準の数値形式の文字列よりもカスタムの数値形式の文字列を使用することに不利な点はありますか?

わかりました-私はそれを認めます、それは複数の質問でした-あなたがそれらすべてに答えるならば、追加のクレジット。

4

3 に答える 3

7

これは私のために働いた:

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;
于 2013-12-02T20:45:26.337 に答える
5

http://www.nasdaq.com/またはhttp://finance.yahoo.com/を見ると、間にスペースがない数字の直後のパーセント記号が一般的であるようです:)

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspxをご覧ください

それはおそらく文化に依存します、デフォルトの(不変の)ビーイングn%

于 2009-02-05T16:25:52.240 に答える
2

デフォルトの PercentPositivePattern 値を変更するには、新しい CultureInfo オブジェクトを作成し、デフォルト (おそらく "en-us") の代わりに使用する必要があります。(代わりに、Web.config でカルチャとして "en-za" を指定することもできますが、明らかな理由からお勧めしません。)

ASP フォーラムには、これらすべてを行う方法を説明したすばらしい投稿があります。3 番目の投稿者 (m0brien) によって書かれたコードを参照してください。彼の正確なコードをマスター ページの Page_Load メソッドにコピーしたので、もう考える必要はありません。

もちろん、いつでも String.Format().Replace(" ", String.Empty) を実行できますが、サイト全体でそれを行う必要があります。さらに、正直なところ、袖をまくり上げてグローバリゼーションの価値観で遊ぶことができるとき、その楽しみはどこにありますか???

于 2009-03-27T23:03:05.743 に答える