使用VB.Net将格式编号转换为货币

时间:2013-03-29 19:08:12

标签: vb.net formatting currency

今天我找到了一个简单的问题,这个问题已经让我失去了真正的成就。我正在尝试格式化数字以显示为货币。有很多方法可以做到这一点,我想我已经完成了大部分工作。

所以这就是问题:我正在添加多个可以是正面和负面的数字,我不知道。当我使用TextBox.Text = Format(variable, "C")在最后格式化时,我得到了正数的正确格式(每个例子123 456,00 $,我住在加拿大),我有(123 456,00 $)表示负数。我希望在开头有“ - ”符号。

我搜索网络以找到其他方法,例如:     FormatCurrency("-123 456", 2, TriState.True, TriState.False)。这样我就可以摆脱括号,但“ - ”是数字(123 456,00 $-)之后。

下一个:SpecificCulture。所以我有NegativeValueHere.ToString("C", CultureInfo.CreateSpecificCulture("fr-CA"))。我用括号(123 456,00 $)回到了开头。请注意,我的应用程序运行时文化设置为("fr-CA"),因为那就是我住的地方。

我再试了一次,但不记得它是什么。但是“$”就在$-123 456,00之前的数字前面。

注意:我在VB.Net上运行,并且必须将数字格式化为只读TextBox

2 个答案:

答案 0 :(得分:4)

您可以使用自定义模式为负货币值创建自己的文化。查看NumberFormatInfo.CurrencyNegativePattern的MSDN库文章。例如:

Imports System.Globalization

Module Module1
    Sub Main()
        Dim simon = DirectCast(CultureInfo.GetCultureInfo("fr-CA").Clone, CultureInfo)
        simon.NumberFormat.CurrencyNegativePattern = 1
        Dim test = -1234.567
        Console.WriteLine(test.ToString("C", simon))
        Console.ReadLine()
    End Sub
End Module

输出: - $ 1 234,57

答案 1 :(得分:3)

这似乎对我有用:

Sub Main()
    Dim value As Decimal = -123.45
    Dim positiveValue As Decimal = 123.45
    Dim customCurrencyInfo As CultureInfo = CultureInfo.CreateSpecificCulture("fr-CA")

    customCurrencyInfo.NumberFormat.CurrencyNegativePattern = 8

    Dim formatString As String = value.ToString("C", customCurrencyInfo)
    Dim formatStringPositive As String = positiveValue.ToString("C", customCurrencyInfo)

    Console.WriteLine(formatString) '-123,45 $
    Console.WriteLine(formatStringPositive) '123,45 $
    Console.ReadLine()

End Sub

您可以从this链接获取NumberFormat.CurrencyNegativePattern的不同模式值。

对不起,如果我偏离正轨