3

我今天为您解决了一个简单的问题,它已经花费了我一天的时间,但没有真正的成就。我正在尝试格式化数字以显示为货币。有很多方法可以做到这一点,我想我已经完成了大部分。

所以这就是问题所在:我正在添加多个可以是正数和负数的数字,我不知道。当我最后使用 格式化时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 上运行,并且必须将数字格式化为放入 readonly TextBox

4

2 回答 2

4

You can create your own culture with a custom pattern for negative currency values. Take a look at the MSDN library article for NumberFormatInfo.CurrencyNegativePattern. For example:

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

Output: -$1 234,57

于 2013-03-29T19:52:28.107 回答
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

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

对不起,如果我跑题了

于 2013-03-29T19:42:17.933 回答