如何在没有百分号的情况下将数字格式化为百分比?

Ole*_*nge 22 c# string-formatting

如何在.NET中将数字格式化为百分比而不显示百分号?

如果我有数字0.13并使用格式字符串{0:P0}输出13 %.

但是我想13改为,而不必将数字乘以100并使用格式字符串{0:N0}.

(背景:在ASP.NET中,我有一个带有BoundField的GridView,我想在其中显示一个数字,但不显示百分号(%).我该怎么做?)


谢谢你的回答.在编辑时,如上所述,在6个中有4个表示我想要避免的内容.我一直在寻找一种只使用格式字符串的方法,并避免乘以100并使用{0:N0},但答案表明这是不可能的......


使用理查德接受的解决方案解决:


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

Thread.CurrentThread.CurrentCulture = new MyCulture();
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 16

定义自己的自定义文化,该文化NumberFormatInfo返回String.EmptyPercentSymbol属性.

然后将该自定义文化用于受影响的页面(或整个应用程序).这可以通过从默认值克隆来完成,以便保留其他区域设置.


pax*_*blo 14

为什么不将数字乘以100并使用"{0:N0}"格式字符串?在我看来,这是最简单的解决方案.

除非你能提出一个可行的理由,为什么那是不可能的,这是我的建议.这不是火箭科学 :-)


bal*_*dre 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
    }
}
Run Code Online (Sandbox Code Playgroud)

并在HTML中

<asp:BoundField DataType="myNumber" HeaderText="%" StringFormat="{0:N0}" />
Run Code Online (Sandbox Code Playgroud)