为什么百分比的标准数字格式包含空格?

Sam*_*rum 9 .net number-formatting

背影故事

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

myDecimal.ToString("P0")
Run Code Online (Sandbox Code Playgroud)

0P告诉它我想没有小数位.这样做可行,因为我的输出最终看起来像:

根据分阶段最低公司缴费率2%计算如上

空间问题

我真的想摆脱数字和百分号之间的那个空间,因为在某些情况下它最终会分开.而且,我更喜欢%以达到数字.

可能的解决方法

1. html/css解决方案

我可以放一个<nobr>标签或<span style="white-space: nowrap;">周围.但是,这感觉很尴尬,无论如何我更倾向于将数字直接对准数字,因为我觉得它看起来更好.这就是我们如何将它写在树林中的报告中,所以这就是我在网页上想要它的方式.

2.自定义格式字符串

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

myDecimal.ToString("0%")
Run Code Online (Sandbox Code Playgroud)

问题

显示数字和百分号之间的空格的百分比更常见吗?这会让我感到惊讶,但它可能会.

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

标准数字格式字符串上使用自定义数字格式字符串是否有任何缺点?

好的 - 我承认,这不仅仅是一个问题 - 如果你全部回答它们的额外信用.

Ale*_*ris 5

看看http://www.nasdaq.com/http://finance.yahoo.com/似乎正好在数字之间没有空格的百分号是常见的:)

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

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


小智 5

这对我有用:

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;
Run Code Online (Sandbox Code Playgroud)