全球化自定义数字格式化 - 可变小数点

3
我正在尝试修改公司应用程序中的数字格式,以使其对国际用户更易读。这是一款股票交易应用程序,因此大多数股票价格精确到2位小数,例如-> 17.23。我们也可能得到精度高达4位小数点的股票,因此一支低价股票可能为0.0341。我们最初使用的股票字符串格式是“#,##0.00##”,这将给我们所需的格式(实质上是修剪“0”)。问题在于“,”和“。”被强制加在用户身上,在许多其他国家/地区中,千位分隔符为“。”,而小数点为“,”。老板不想对所有数字使用“N4”,尽管这可以解决全球化问题。是否可能拥有全球化的自定义字符串格式?除了编写一些中间代码来国际化以原始方式或其他string.format方法格式化的数字之外,还有其他选择吗?
2个回答

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

0

自定义格式字符串中的,.已经被翻译成了当前文化的正确分隔符。您不需要更改您的代码。请参见MSDN


啊,你说得对。显然我的问题是生成字符串的线程没有按照我指定的文化运行。 - ReiniGrauer
我所看到的另一个问题是货币,如果我想要当前文化中带有2-4位小数精度的货币符号,是否有一种好的方法来实现?使用"$###,##0.00##"将始终使用'$',因为它不是文化货币符号的占位符(根据MSDN),这是正确的吗? - ReiniGrauer
1
看看我的答案,只需将N4更改为C4。 - goenning

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接