2

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

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

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

我以为我可以做类似的事情: .toString("#0.00")

4

3 回答 3

2

尝试:

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

更多信息在这里:http:
//msdn.microsoft.com/en-us/library/dwhawy9k.aspx

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

value.ToString("C", CultureInfo.CreateSpecificCulture("en-US"))
于 2009-04-14T01:42:11.413 回答
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

于 2009-04-14T13:31:10.350 回答
0

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

Dim dec As Decimal = 1.25D
dec.ToString(System.Globalization.CultureInfo.InvariantCulture);
//writes 1.25
于 2009-04-14T01:40:18.907 回答