代码之家  ›  专栏  ›  技术社区  ›  Sam Meldrum

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

  •  9
  • Sam Meldrum  · 技术社区  · 15 年前

    幕后故事

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

    myDecimal.ToString("P0")
    

    这个 0 P 告诉它我不需要小数点。就目前而言,这是可行的,因为我的输出结果看起来像:

    按上述分阶段最低公司贡献率2%计算

    空间问题

    我真的想去掉数字和百分号之间的空格,因为在某些情况下,它最终会被横线分开。而且,我更喜欢百分比而不是数字。

    可能的解决方法

    1。HTML/CSS解决方案

    我可以放一个 <nobr> 标签或 <span style="white-space: nowrap;"> 围绕着它。但是,这感觉很尴尬,而且不管怎样,我更喜欢这个百分比,因为我觉得它看起来更好。这就是我们如何把它写在这个森林之颈的报告中,所以这就是我在网页上想要它的方式。

    2。自定义格式字符串

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

    myDecimal.ToString("0%")
    

    问题

    用数字和百分比符号之间的空格显示百分比更常见吗?这会让我吃惊,但也有可能。

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

    使用 自定义数字格式字符串 过了 标准数字格式字符串 ?

    好吧——我承认,这不止一个问题——如果你全部回答的话,那就额外加分。

    3 回复  |  直到 10 年前
        1
  •  5
  •   Aleris    15 年前

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

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

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

        2
  •  5
  •   user565869    11 年前

    这对我很有用:

    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;
    
        3
  •  2
  •   David    15 年前

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

    有一个很棒的帖子 ASP Forums 解释如何完成所有这些。请参见第三张海报(m0brien)编写的代码。我把他的精确代码复制到了我的母版页的page-load方法中,这样我就不必再考虑它了。

    当然,您可以只做string.format().replace(“”,string.empty),但您必须在整个站点中这样做。另外,老实说,当你卷起袖子,玩弄你的全球化价值观时,这其中的乐趣在哪里呢????

    推荐文章