如何在没有百分号的情况下将数字格式化为百分比?
如何在.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();
使用自己的NumberFormatInfo
定义自定义区域性,该PercentSymbol
为其PercentSymbol
属性返回String.Empty
。
然后将该自定义文化用于受影响的页面(或整个应用程序)。 这可以通过从默认值克隆来完成,以便保留其他区域设置。
为什么不将数字乘以100并使用"{0:N0}"
格式字符串? 在我看来,这是最简单的解决方案。
除非你能提出一个可行的理由,为什么这是不可能的,这是我的建议。 这不是火箭科学 :-)
但乘以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中
MSDN *在“自定义数字格式字符串”下具有此function:
格式字符串中存在’%’字符会导致数字在格式化之前乘以100。 在格式字符串中出现’%’的位置处,数字本身会插入相应的符号。 使用的百分比字符取决于当前的NumberFormatInfo类。
但是这个例子表明它也输出了%符号 – 不是你想要的,但也许可以通过NumberFormatInfo类设置为空?
但是,我同意Pax并且不明白为什么不选择* 100和{0:N0}
**从Visual Studio内访问所以没有链接*
这个怎么样…
String.Format("{0:P0}",0.13).Replace("%","")
编辑:这应该跨文化:
var percentSymbol = CultureInfo.CurrentCulture.NumberFormat.PercentSymbol; String.Format("{0:P0}",0.13).Replace(percentSymbol,"")
还有这种解决方案可能更优雅但代码更多。
修剪怎么样?
double d = .102; string percent = d.ToString("P0").Trim(' ', '%');
首先要考虑的一点,显示没有%的百分比是一个数字,所以让我们忽略百分比方面。 您想知道如何将1或更小的数字显示为100或更少。 我很欣赏它的约束,所以你不能在显示时修改它,所以为什么不在查询时修改它,即SELECT(值* 100)AS百分比,……?
你也可以尝试类似的东西
string newString = "0.13".Replace("0.", string.Empty) + "%";
以下是使用NumberFormatInfo的示例,如@Richard建议:
string.Format(new NumberFormatInfo { PercentSymbol = string.Empty }, "{0:0%}", 0.123); // => 12