0

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

根据我计算机上的用户文化,结果看起来像“123 456 789.1235”或“123,456,789.1235”

我该如何强制

Dim A As Decimal = "123456789.123456" 

Dim B As String = FormatNumber(A, 4)
4

3 回答 3

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,因为您尝试将字符串分配给十进制值。

于 2012-06-26T18:12:53.830 回答
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=","or " "oranything you want 和最后一个if语句处理的情况是i-3 < 0

于 2012-06-26T18:35:08.260 回答
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("-")

注意修剪声明。它会删除由于 a 的长度而可能出现的任何前导字符。不过,我确实喜欢@Subs 例程,因为它可以处理任何长度。这个你必须放入足够的占位符 (#) 来处理它。

于 2012-06-26T18:45:27.523 回答