2009-06-02 11 views
19

.NETで、パーセント記号を表示せずに数値をパーセントで入力するにはどうすればよいですか?パーセント記号なしで数値を書式設定する方法はありますか。

数値が0.13で、フォーマット文字列が{0:P0}の場合、出力は13 %です。

しかし、私はが100で数を乗算したとフォーマット文字列{0:N0}を使用せずに、代わりに13を取得したいと思います。

(背景:私は割合としてではなくパーセント記号(%)なしで番号を表示したい場所をASP.NETで私はBoundFieldとGridViewコントロールを持って、私はそれを行うにはどうすればよい?)


答えをありがとう。上記の6のうち4を編集する時、私が避けたいものを提案します。

:受け入れソリューションを使用することによって解決


Richardで...私は唯一のフォーマット文字列を使用し、100を乗じと{0:N0}を使用して回避する方法を探していましたが、答えはそれは不可能だ示します


public class MyCulture : CultureInfo 
{ 
    public MyCulture() 
     : base(Thread.CurrentThread.CurrentCulture.Name) 
    { 
     this.NumberFormat.PercentSymbol = ""; 
    } 
} 

Thread.CurrentThread.CurrentCulture = new MyCulture(); 
+1

100を乗算すると何が問題になりますか? –

+2

何も問題はありません。私はデータ照会を変更せずに数字の表示を変更したいと思っています。特に、私はどのように番号を表示するか知りたいと思います。 ASP.NETのBoundFieldで0.13を13として - パーセント記号なし。 –

答えて

15

ような何かを試みることができます。

影響を受けたページ(またはアプリケーション全体)のカスタムカルチャを使用します。これはデフォルトからクローンを作成することで可能になり、他の地域の設定は保持されます。

+0

ありがとう!確かにそのトリックを行うはい! –

14

数値に100を掛けて、"{0:N0}"フォーマット文字列を使用してみませんか?それは私にとって最も簡単な解決策に思えます。

なぜそれが問題外であるかの理由を考え出すことができない限り、それは私のアドバイスです。それは

+0

+1 {0:P0} – fretje

+0

ありがとうございました。これはフォーマット文字列の数値を拡大縮小する方法がないことを意味しますか?たぶん私はそのような別の質問を定式化する必要があります。 –

2

:-)ロケット科学ではありませんMSDN *は、「カスタム数値書式指定文字列」の下にこれを持っている:

フォーマット文字列で、「%」文字の存在が を乗算する番号を引き起こし100分前には となります。適切なシンボルは フォーマット文字列に '%'が表示されている の番号に数字 が挿入されています。使用されるパーセント記号 は、現在の NumberFormatInfoクラスに依存します。

しかし、この例では、%記号が出力されていますが、何も必要ではありませんが、NumberFormatInfoクラスでは何も設定できないことがわかります。

しかし、私はパックスに同意し、* 100で行くと、{0:N0}はありませんなぜ見ることができません

のVisual Studio内からのアクセス

**ありませんので、リンク*

2

これは、文化を越え動作するはず:これはどのように...

String.Format("{0:P0}",0.13).Replace("%","") 

EDIT

var percentSymbol = CultureInfo.CurrentCulture.NumberFormat.PercentSymbol; 
String.Format("{0:P0}",0.13).Replace(percentSymbol,"") 

this solutionもありますが、よりエレガントかもしれませんが少しコードがあります。

+1

Replace( "%" ... - 空白を含むもの...または最終結果を正しくトリミングする:) – balexandre

+4

これは、状況によっては失敗する可能性があります。%記号はカルチャの影響を受けます。 – CiscoIPPhone

+0

+1 "文化の影響を受ける" –

5

しかし、100を掛けることは、まさにあなたが望むものです!トリムについて

protected void myGrdiView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     myObjectType ot = (myObjectType)e.Row.DataItem; 

     ot.myNumber = ot.myNumber * 100; // multiply by 100 
    } 
} 

とHTMLで

<asp:BoundField DataType="myNumber" HeaderText="%" StringFormat="{0:N0}" /> 
0

どのように?

double d = .102; 
string percent = d.ToString("P0").Trim(' ', '%'); 
0

第一に考慮すべき点、%ことなく表示比率はそれほどパーセント側面を無視することができ数です。 100以下の数字を1以下で表示する方法を知りたい。表示時間に変更できないようにバインドされていることに感謝します。クエリ時にSELECT(値* 100)AS Percentageを変更するのはどうしてですか?

0

また、そのPercentSymbolプロパティのString.Emptyを返すNumberFormatInfo、独自にカスタムカルチャを定義

string newString = "0.13".Replace("0.", string.Empty) + "%"; 
関連する問題