如何强制FormatNumber使用“ - ”分隔每个“000”
取决于我的用户在他们的计算机上的文化 结果看起来像“123 456 789.1235”或“123,456,789.1235”
我该怎么强迫它
Dim A As Decimal = "123456789.123456"
Dim B As String = FormatNumber(A, 4)
答案 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例程,因为它可以处理不管长度。这个你需要放置足够的占位符(#)来处理它。