11

背后的故事

我有一些十进制值,作为较大字符串的一部分,我在网页上显示为字符串。我开始使用标准数字格式字符串来输出它。例如

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

它可能取决于文化,默认(不变)beeing n %

于 2009-02-05T16:25:52.240 回答
2

要更改默认的 PercentPositivePattern 值,您必须创建一个新的 CultureInfo 对象并使用它来代替默认值,默认值可能是“en-us”。(或者,您可以在 Web.config 中指定“en-za”作为文化,但出于明显的原因,我不建议这样做。)

ASP 论坛上有一篇很棒的文章解释了如何完成所有这些工作。请参阅第三张海报 (m0brien) 编写的代码。我将他的确切代码复制到我的母版页的 Page_Load 方法中,这样我就不必再考虑它了。

当然,您总是可以只执行 String.Format().Replace(" ", String.Empty),但您必须在整个站点中执行此操作。另外,老实说,当你可以卷起袖子玩弄你的全球化价值观时,乐趣在哪里???

于 2009-03-27T23:03:05.743 回答