如何通过指定要使用的符号来格式化VB.NET中的货币。 £或$。
我一直在使用formatcurrency但是我找不到改变值前面的符号的方法。
答案 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