FormatNumber で「-」を使用して「000」ごとに区切るにはどうすればよいですか
ユーザーのコンピューターの文化に応じて、結果は「123 456 789.1235」または「123,456,789.1235」のようになります
強制する方法
Dim A As Decimal = "123456789.123456"
Dim B As String = FormatNumber(A, 4)
まあ、それを行うにはたくさんの方法があります。スペースを挿入したい場合、@ 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
@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ルーチンは長さに関係なく処理できるので、私は好きです。これは、それに対処するために十分なプレースホルダー(#)を入れる必要があります。
.ToString のドキュメントを参照してください。
したがって:
Dim a As Decimal = 123456789.123456D
Dim b As String = a.ToString("###,##0.####")
文字列を 10 進値に割り当てようとしたため、Option Strict Onの設定方法を調べてください。