如何在VB.NET中格式化货币

时间:2015-11-26 20:13:37

标签: vb.net

如何通过指定要使用的符号来格式化VB.NET中的货币。 £或$。

我一直在使用formatcurrency但是我找不到改变值前面的符号的方法。

1 个答案:

答案 0 :(得分:3)

使用像FormatCurrency这样的传统VB函数是有限的,因为它们只知道当前的文化。 .ToString("C2")将使用当前文化作为符号和小数。要指定不同的文化:

Dim decV As Decimal = 12.34D

Console.WriteLine("In France: {0}", decV.ToString("C2", New CultureInfo("fr-FR")))
Console.WriteLine("For the Queen! {0}", decV.ToString("C2", New CultureInfo("en-GB")))
Console.WriteLine("When in Rome: {0}", decV.ToString("C2", New CultureInfo("it-IT")))
Console.WriteLine("If you are Hungary: {0}", decV.ToString("C2", New CultureInfo("hu-HU")))
Console.WriteLine("For the US of A: {0}", decV.ToString("C2", New CultureInfo("en-US")))

输出:

  

在法国:12,34€   对于女王! £12.34
  在罗马时:12,34欧元   如果你是匈牙利:12,34英尺   对于美国的A:12.34美元

Table of Language Culture Names, Codes

您还可能在将外币字符串转换为值时遇到问题,因为CDec只知道如何使用本地文化。您可以使用Decimal.TryParse并指定传入文化:

' Croatian currency value
Dim strUnkVal = decV.ToString("C2", New CultureInfo("hr-HR"))
Dim myVal As Decimal

' if the string contains a valid value for the specified culture
' it will be in myVal
If Decimal.TryParse(strUnkVal,
                    NumberStyles.Any,
                    New CultureInfo("hr-HR"), myVal) Then
    Console.WriteLine("The round trip: {0}", myVal.ToString("C2"))
End If