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

まあ、それを行うにはたくさんの方法があります。スペースを挿入したい場合、@ 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

于 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 に答える
1

.ToString のドキュメントを参照してください。

したがって:

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

文字列を 10 進値に割り当てようとしたため、Option Strict Onの設定方法を調べてください。

于 2012-06-26T18:12:53.830 に答える