4

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

谢谢 !

4

8 回答 8

6

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

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

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

对于数据绑定的普通数字,请使用Mark Glorie 的示例

MSDN 文章

于 2009-01-07T02:54:23.333 回答
3

我会使用字符串格式。对应用程序的配置进行更改以满足 UI 要求是很严厉的。SteveX 写了一篇很棒的关于字符串格式化的博文。它还与标记 (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.

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

于 2009-01-07T01:18:50.077 回答
1

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

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

于 2011-09-05T07:29:14.447 回答
0
String.Format(”{0:f;(f);0”, -1);
于 2009-01-07T01:21:55.953 回答
0

我已将以下页面添加为用于进行字符串格式化的书签:http: //idunno.org/archive/2004/14/01/122.aspx

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

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

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

于 2009-01-07T02:43:56.427 回答
0

这行得通。

DataFormatString="{0:c0}"
  • 括号中的负数
  • 千位分隔符 - 逗号
  • $符号在前面
于 2011-03-04T00:24:09.350 回答
-1

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

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

于 2009-01-07T01:08:40.737 回答
-1

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

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

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

于 2009-01-07T02:40:09.587 回答