今天我找到了一个简单的问题,这个问题已经让我失去了真正的成就。我正在尝试格式化数字以显示为货币。有很多方法可以做到这一点,我想我已经完成了大部分工作。
所以这就是问题:我正在添加多个可以是正面和负面的数字,我不知道。当我使用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
。
答案 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
的不同模式值。
对不起,如果我偏离正轨