代码之家  ›  专栏  ›  技术社区  ›  Andre Gallo

ASP.NET-括号中的负数

  •  4
  • Andre Gallo  · 技术社区  · 17 年前

    我的应用程序当前显示负数为-1。用户已经更改了需求(只是为了更改!),现在我们必须将数字显示为(1)。 我是否可以为整个应用程序启用该功能,例如更改web.config甚至应用程序的CultureInfo?既然我们有很多包含数字验证器的页面,那么这样做有什么副作用吗?

    谢谢

    8 回复  |  直到 17 年前
        1
  •  6
  •   Community Mohan Dere    8 年前

    对于货币来说,这真的很容易:

    String.Format("{0:C}", value)
    

    这将使用系统的区域性信息。

    对于数据绑定的正常数字,使用 Mark Glorie's sample

    MSDN Article

        2
  •  3
  •   jcollum    17 年前

    我会使用字符串格式。对应用程序的配置进行更改以满足UI需求是一项繁重的工作。史蒂文斯写了一封信 great blog post 关于字符串格式。它还与标记(aspx)兼容,而不仅仅与代码相关。

    从他的职位:

    String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);
    
        This will output “$1,240.00″ if passed 1243.50. It will output the 
        same format but in parentheses if the number is negative, and will
        output the string “Zero” if the number is zero.
    

    这并不完全是你想要的,但很接近。

        3
  •  1
  •   Vaidehi    14 年前

    检查这个。。 http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

    将指定样式的数字的字符串表示形式转换为其十进制等效形式。

        4
  •  0
  •   FryGuy    17 年前

    我已将以下页面标记为书签,用于设置字符串格式: http://idunno.org/archive/2004/14/01/122.aspx

    大约走了一半,它给出了答案:

    String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);
    

    为了回答你的另一个问题,出于其他答案中给出的原因,我不会修改app.config使其成为全局的。

        5
  •  0
  •   amurra    14 年前
    String.Format(”{0:f;(f);0”, -1);
    
        6
  •  0
  •   Andro Selva Anand Wadhwani    13 年前

    这很有效。

    DataFormatString="{0:c0}"
    
    • 妄想症中的否定量
    • 千位分隔符-逗号
    • $symbol在前面
        7
  •  -1
  •   Esteban Araya    17 年前

    您可以编写自己的自定义ToString()方法作为扩展方法,但正如您所提到的,使用CultureInfo可能更好。请看这里:

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

        8
  •  -1
  •   Mark Glorie    17 年前

    您是否在Gridview/Datagrids中显示数据?如果是这样,则可以对每个绑定列应用格式,例如:

    <asp:BoundField DataFormatString="{##;(##)}"/>