C# formatnumber每次添加逗号如何?

C# formatnumber每次添加逗号如何?,c#,vb.net,C#,Vb.net,如何强制FormatNumber使用“-”分隔每个“000” 取决于我的用户计算机上的文化 结果看起来像“123456789.1235”或“123456789.1235” 我怎么强迫它 Dim A As Decimal = "123456789.123456" Dim B As String = FormatNumber(A, 4) 参见.ToString的文档,例如 因此: 请查看如何在上设置选项Strict,因为您已尝试将字符串指定给十进制值。请参阅.ToString的文档,例如 因此

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

取决于我的用户计算机上的文化 结果看起来像“123456789.1235”或“123456789.1235”

我怎么强迫它

Dim A As Decimal = "123456789.123456" 

Dim B As String = FormatNumber(A, 4)

参见.ToString的文档,例如

因此:


请查看如何在上设置选项Strict,因为您已尝试将字符串指定给十进制值。

请参阅.ToString的文档,例如

因此:


请查看如何在
上设置选项Strict,因为您已尝试将字符串指定给十进制值。

好的,有很多方法可以做到这一点。如果您想插入空格,那么@Andrew way将不起作用,但它很简单。这是一种方法,如果您尝试,它将激励您编写自己的代码

    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
十进制尺寸a=123456789.123456D
尺寸i为整数=a.IndexOf(“.”)
尺寸b作为字符串=a。子字符串(i)
Dim sep As String=“”
对于j作为整数=i-3到0步骤-3
如果j>0,则
b=sep+a.子串(j,3)+b
如果结束
如果j<3,则
如果j=0,则
b=a.子串(0,3)+b
其他的
b=a.子串(0,j)+b
如果结束
如果结束
下一个
如果我小于3,那么
b=a.子串(0,i)+b
如果结束

注意:
sep=“,”
任何您想要的
和最后的
if
语句处理
i-3<0
的情况。好吧,有很多方法可以做到这一点。如果您想插入空格,那么@Andrew way将不起作用,但它很简单。这是一种方法,如果您尝试,它将激励您编写自己的代码

    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
十进制尺寸a=123456789.123456D
尺寸i为整数=a.IndexOf(“.”)
尺寸b作为字符串=a。子字符串(i)
Dim sep As String=“”
对于j作为整数=i-3到0步骤-3
如果j>0,则
b=sep+a.子串(j,3)+b
如果结束
如果j<3,则
如果j=0,则
b=a.子串(0,3)+b
其他的
b=a.子串(0,j)+b
如果结束
如果结束
下一个
如果我小于3,那么
b=a.子串(0,i)+b
如果结束

注意:
sep=“,”
任何您想要的
和最后一条
if
语句处理的是@Andrew所说的
i-3<0
的情况,但是如果您想要空格(或破折号),您可以将它们插入逗号的位置

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=123456789.123456D
将b作为字符串调整为If(a<0,“-”,“”)和a.ToString(“###############0.######0.#####Trim(“)
'Dim b As String=If(a<0,“-”,“”)和a.ToString(“##-#-#-#-#-#-#-#-#-#-#-#0.##-#-#-#”)。Trim(“-”)

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

正如@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=123456789.123456D
将b作为字符串调整为If(a<0,“-”,“”)和a.ToString(“###############0.######0.#####Trim(“)
'Dim b As String=If(a<0,“-”,“”)和a.ToString(“##-#-#-#-#-#-#-#-#-#-#-#0.##-#-#-#”)。Trim(“-”)

请注意trim语句。它会删除由于a的长度而可能出现的任何前导字符。不过,我确实喜欢@Subs例程,因为它可以处理一个不受长度限制的任务。这一个你必须放足够的占位符(#)来处理它。

是的,这个操作有点混乱,因为标题上写着“formatnumber添加逗号…”,但在正文的第一行它要求添加“-”。和“,”和“-”在我见过的任何键盘上都不太接近。@AndrewMorton,是的,我试图激励他自己编写代码,而不是寻求简单的帮助。OP有点让人困惑,因为标题是“formatnumber添加逗号…”,但在正文的第一行,它要求添加“-”。和“,”和“-”在我见过的任何键盘上都不太接近。@AndrewMorton,是的,我试图激励他自己编写代码,而不是寻求简单的帮助。a为负数时的修剪(“-”)是什么?@Andrew,你明白了。没有考虑到这一点。也许在它周围写一个if语句,说if a是@Andrew,是的,我的意思是用if代替IIf;今天用VBA编程,我的思维方式不同了。更新了上面的代码。但这是我的最后一个;OP需要采取一些主动。a为负值时的.Trim(“-”)呢?@Andrew,你明白了。没有考虑到这一点。也许在它周围写一个if语句,说if a是@Andrew,是的,我的意思是用if代替IIf;今天用VBA编程,我的思维方式不同了。更新了上面的代码。但这是我的最后一个;OP需要采取一些主动。