使用VB.NET的任何区域的Decimal.toString()

时间:2009-04-14 01:35:01

标签: vb.net formatting locale currency region

我有一个处理货币的应用程序。出于显示目的,我使用了漂亮的VB FormatCurrency函数,该函数将根据操作系统的区域设置进行格式化。所以,如果在法国你可能得到123,45,而在美国你会得到123.45。

要对这些金额执行计算,我使用CDec()转换为十进制。

我的问题是,当我使用toString()将Decimal转换为String时,它会根据当前设置的区域进行格式化。我需要能够始终将小数转换为美国的字符串表示形式,即带小数点。

我以为我可以做类似的事情: 的ToString( “#0.00”)

3 个答案:

答案 0 :(得分:2)

尝试:

value.ToString("C", CultureInfo.InvariantCulture)

此处有更多信息:
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

“C”是为货币格式化,但您可以使用许多不同的格式字符串。如果你真的希望它格式化为“美国”而不是不变文化,你可以这样做:

value.ToString("C", CultureInfo.CreateSpecificCulture("en-US"))

答案 1 :(得分:2)

    Dim dec As Decimal = 1.25D
    Dim s As String
    s = dec.ToString("C2", System.Globalization.CultureInfo.CreateSpecificCulture("en-US"))

产生1.25美元

    s = dec.ToString("N2", System.Globalization.CultureInfo.CreateSpecificCulture("en-US"))

产生1.25

答案 2 :(得分:0)

尝试将InvariantCulture传递给ToString()方法:

Dim dec As Decimal = 1.25D
dec.ToString(System.Globalization.CultureInfo.InvariantCulture);
//writes 1.25