如何强制 FormatNumber 使用“-”分隔每个“000”
根据我计算机上的用户文化,结果看起来像“123 456 789.1235”或“123,456,789.1235”
我该如何强制
Dim A As Decimal = "123456789.123456"
Dim B As String = FormatNumber(A, 4)
请参阅 .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,因为您尝试将字符串分配给十进制值。
好吧,有很多方法可以做到这一点。如果您想插入空格,那么@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
正如@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 例程,因为它可以处理任何长度。这个你必须放入足够的占位符 (#) 来处理它。