formatnumber每次都添加逗号怎么样?

时间:2012-06-26 17:49:26

标签: c# vb.net

如何强制FormatNumber使用“ - ”分隔每个“000”

取决于我的用户在他们的计算机上的文化 结果看起来像“123 456 789.1235”或“123,456,789.1235”

我该怎么强迫它

Dim A As Decimal = "123456789.123456" 

Dim B As String = FormatNumber(A, 4)

3 个答案:

答案 0 :(得分:1)

请参阅.ToString的文档,例如http://msdn.microsoft.com/en-us/library/1ce53cfb%28v=vs.100%29.aspx

因此:

Dim a As Decimal = 123456789.123456D
Dim b As String = a.ToString("###,##0.####")

请查看如何设置 Option Strict On ,因为您已尝试将字符串指定为小数值。

答案 1 :(得分:1)

嗯,有很多方法可以做到。如果你想插入空格,那么@Andrew方式将不起作用,但它很简单。这是一种方法,如果你尝试将激励你写自己的编码。

    Dim a As Decimal = 123456789.123456D
    Dim i As Integer = a.IndexOf(".")
    Dim b As String = a.Substring(i)    
    Dim sep As String = " "   
    For j As Integer = i - 3 To 0 Step -3
        If j > 0 Then
            b = sep + a.Substring(j, 3) + b
        End If
        If j < 3 Then
            If j = 0 Then
                b = a.Substring(0, 3) + b
            Else
                b = a.Substring(0, j) + b
            End If
        End If
    Next
    If i < 3 Then
        b = a.Substring(0, i) + b
    End If

注意:sep=","" "anything you want以及最后if声明处理的情况i-3 < 0

答案 2 :(得分:1)

正如@Andrew所说,但如果你想要空格(或破折号),你可以插入它们代替逗号。

Dim a As Decimal = 123456789.123456D
Dim b As String = If(a < 0,"-","") & a.ToString("### ### ### ### ##0.####").Trim(" ")
'Dim b As String = If(a < 0,"-","") & a.ToString("###-###-###-###-##0.####").Trim("-")

注意trim语句。它会删除由于a的长度而可能显示的任何前导字符。我喜欢@Subs例程,因为它可以处理不管长度。这个你需要放置足够的占位符(#)来处理它。