ASP.NET - 括号中的负数

时间:2009-01-07 01:06:03

标签: asp.net web-config cultureinfo

我的应用程序当前显示负数为-1。用户已经改变了要求(只是为了改变!),现在我们必须将数字显示为(1)。 我是否可以为整个应用程序启用更改web.config甚至应用程序的CultureInfo?这样做是否有任何副作用,因为我们有很多包含数字验证器的页面?

谢谢!

8 个答案:

答案 0 :(得分:6)

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

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

这将使用系统的文化信息。

对于数据绑定的普通数字,请使用Mark Glorie's sample

MSDN Article

答案 1 :(得分:3)

我使用字符串格式。更改应用程序的配置以满足UI要求是非常严厉的。 SteveX写了一篇关于String格式的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.

这不是你想要的,但它很接近。

答案 2 :(得分:1)

检查一下.. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

将指定样式中数字的字符串表示形式转换为其Decimal等效项。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

String.Format(”{0:f;(f);0”, -1);

答案 5 :(得分:0)

我有以下页面标记为进行字符串格式化:http://idunno.org/archive/2004/14/01/122.aspx

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

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

要回答您的其他问题,我不会修改app.config以使其全局化,原因在于其他答案中给出的原因。

答案 6 :(得分:0)

这很有效。

DataFormatString="{0:c0}"
  • 括号中的负数
  • 千位分隔符 - 逗号
  • $符号在前面

答案 7 :(得分:-1)

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

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

这仅适用于整数......