2011-05-05 104 views
3

我试图改变我公司应用程序中的现有数字格式,以使其对国际用户更具可读性。这是一个股票交易应用程序,所以大多数股票价格的数字精确到2个小数点,就像 - > 17.23我们也可以得到有4个小数点的精确值,所以一分钱股票可能是0.0341。我们用于股票的原始字符串格式是“#,## 0.00 ##”这将给我们所需的格式(基本上修剪'0')。这里的问题是','和'。'被强制转移到用户上,在许多其他国家,千位分隔符是'。'小数点是','。老板人不想对所有数字都使用“N4”,尽管这可以解决全球化问题。是否有可能拥有全球化的自定义字符串格式?全球化的自定义数字格式 - 可变小数点

除了编写一些中间人代码来国际化数字格式的原始方式或另一种string.format方法之外的其他选项?

回答

0

自定义格式字符串中的,.已转换为当前区域性的正确分隔符。你不应该需要改变你的代码。见MSDN

+0

啊,你说得对。显然我的问题是产生字符串的线程没有运行,因为我认为我指定的文化。 – ReiniGrauer 2011-05-05 18:43:04

+0

我看到的唯一的其他问题是货币,如果我想在当前文化的货币符号前面加上2-4小数点的精度,那么是否有一个很好的方法来做到这一点?使用“$ ###,## 0.00 ##”将始终使用'$',因为它不是文化货币符号(根据MSDN)的占位符正确吗? – ReiniGrauer 2011-05-05 19:02:01

+1

看看我的答案,只需将N4更改为C4即可 – goenning 2011-05-05 19:13:46

1

检查了这一点:

float value = 0.0341f; 
string output = string.Empty; 
CultureInfo brazil = new CultureInfo("pt-BR"); 
CultureInfo usa = new CultureInfo("en-US"); 
output = value.ToString("C4", brazil.NumberFormat); //output is R$ 0,0341 
output = value.ToString("C4", usa.NumberFormat); //output is $0.0341