背景故事

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

myDecimal.ToString("P0")

0 之后 P 告诉它我不想要小数位。就目前而言,这是有效的,因为我的输出最终看起来像这样:

上述计算基于阶段性最低公司贡献率 2%

空间问题

我真的想去掉数字和百分号之间的空格,因为在某些情况下它最终会跨行分割。而且,我更喜欢用百分比来表示数字。

可能的解决方法

1.html/css解决方案

我可以放一个 <nobr> 标签或 <span style="white-space: nowrap;"> 周围。但是,这感觉很尴尬,而且无论如何,我更喜欢将百分比与数字相对应,因为我认为这样看起来更好。这就是我们在这个地区的报告中编写的方式,所以这就是我希望它在网页上的方式。

2.自定义格式字符串

我最终将使用自定义数字格式字符串,例如

myDecimal.ToString("0%")

问题

显示百分比时数字和百分号之间有空格是否更常见?这会让我感到惊讶,但也有可能。

有没有办法告诉 标准数字格式字符串 我不想要这个空间?

使用有什么缺点吗 自定义数字格式字符串 在...之上 标准数字格式字符串?

好吧 - 我承认,这不仅仅是一个问题 - 如果你回答了所有问题,则额外加分。

有帮助吗?

解决方案

看着 http://www.nasdaq.com/ 或者 http://finance.yahoo.com/ 似乎数字后面没有空格的百分号很常见:)

看一下 http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx

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

其他提示

这为我工作:

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;

要更改默认PercentPositivePattern值,则必须创建一个新的CultureInfo对象,并使用它,而不是默认的,这可能是“EN-US”的。 (或者,您可以指定“EN-ZA”在你的web.config的文化,但我不建议出于显而易见的原因。)

有一个在 ASP论坛一个伟大的帖子解释如何做到这一切。见第三海报(m0brien)编写的代码。我抄他的确切代码到我的母版页的Page_Load方法,这样我就不必再考虑一下。

当然,你总是可以只是的String.Format()。替换(””的String.Empty),但你必须这样做,整个网站。另外,说实话,那里是在的乐趣时,你可以卷起你的袖子,并与全球化值???

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top