.net 为什么百分比的标准数字格式包含空格? 背景故事

.net 为什么百分比的标准数字格式包含空格? 背景故事,.net,number-formatting,.net,Number Formatting,我有一些十进制值,在网页上显示为字符串,作为较大字符串的一部分。我开始使用一个标准的数字格式字符串来输出它。例如 myDecimal.ToString("P0") p后面的0告诉它我不需要小数点。这就可以实现了,因为我的输出最终看起来像: 根据2%的分阶段最低公司出资率按上述计算 空间问题 我真的想去掉数字和百分号之间的空格,因为在某些情况下,它最终会跨行分裂。而且,我更喜欢%与数字匹配 可能的解决办法 1.html/css解决方案 我可以在它周围放一个标签或。但是,这感觉很尴尬,而且无论如何

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

myDecimal.ToString("P0")
p
后面的
0
告诉它我不需要小数点。这就可以实现了,因为我的输出最终看起来像:

根据2%的分阶段最低公司出资率按上述计算

空间问题 我真的想去掉数字和百分号之间的空格,因为在某些情况下,它最终会跨行分裂。而且,我更喜欢%与数字匹配

可能的解决办法 1.html/css解决方案 我可以在它周围放一个
标签或
。但是,这感觉很尴尬,而且无论如何,我更喜欢%与数字直接对应,因为我认为它看起来更好。这是我们将如何在这片森林的颈部的报告中写它,所以这是我希望它在网页上的方式

2.自定义格式字符串 我将使用一个自定义的数字格式字符串,例如

myDecimal.ToString("0%")
问题 在数字和百分号之间用空格显示百分比是否更常见?这会让我感到惊讶,但也有可能

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

与标准数字格式字符串相比,使用自定义数字格式字符串是否有任何缺点

好的-我承认,这不仅仅是一个问题-如果你全部回答的话,那就要额外加分了。

看看,或者看起来数字后面没有空格的百分号很常见:)

看看


它可能取决于区域性,默认(不变)为n%

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

网站上有一篇很好的帖子,解释如何做到这一切。请参阅第三张海报(m0brien)编写的代码。我将他的精确代码复制到母版页的page_Load方法中,这样我就不必再考虑它了

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

这对我很有用:

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;

Windows 8中似乎发生了一些变化。当Windows区域设置配置为英语(澳大利亚)时,ToString(“P2”)给出“0.00%”,但在具有相同区域设置的Windows 7框中,它返回“0.00%”。指定不变区域性会导致在Win7和Win8上包含一个空间。谢谢,David!这让我快发疯了!在我的本地机器和构建服务器之间,我得到了不同的单元测试结果(“52.00%”与“52.00%”),现在它是有意义的。是的,这取决于文化,英语有一定的空间,尽管对此有无休止的讨论。