【问题标题】:Why does the Standard Numeric Format for percentages include a space?为什么百分比的标准数字格式包含空格?
【发布时间】:2010-10-05 17:13:28
【问题描述】:

背景故事

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

myDecimal.ToString("P0")

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

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

空间问题

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

可能的解决方法

1.html/css解决方案

我可以在它周围放置一个<nobr> 标签或<span style="white-space: nowrap;">。但是,这感觉很尴尬,而且无论如何我更喜欢 % 来匹配这个数字,因为我认为它看起来更好。这就是我们在这片树林的报告中写它的方式,所以这就是我希望它在网页上的方式。

2.自定义格式字符串

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

myDecimal.ToString("0%")

问题

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

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

使用自定义数字格式字符串优于标准数字格式字符串有什么缺点吗?

好的 - 我承认,这不止一个问题 - 如果您全部回答,则额外加分。

【问题讨论】:

  • Windows 8 中似乎发生了一些变化。Windows 区域设置配置为英语(澳大利亚)时,ToString("P2") 给出“0.00%”,但在具有相同区域设置的 Windows 7 机器上,它返回“0.00 %”。指定 Invariant 区域性会导致在 Win7 和 8 上包含一个空格。
  • 谢谢,大卫!这让我发疯了!我在本地机器和构建服务器之间得到了不同的单元测试结果(“52.00 %”与“52.00%”),现在这很有意义。

标签: .net number-formatting


【解决方案1】:

这对我有用:

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;

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 是的,这取决于文化和英语有一个空间,尽管有无休止的讨论。
      猜你喜欢
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多