2010-11-30 54 views
0

我试图将逗号分隔符添加到数字。我试过这里的建议:add commas using String.Format for number and和这里:.NET String.Format() to add commas in thousands place for a number但我无法让它工作 - 他们只是返回没有逗号的数字。我正在使用的代码是在这里:将逗号分隔符添加到数字,asp.net

public static string addCommas(string cash) { return string.Format("{0:n0}", cash).ToString();
}

我要去哪里错了?

谢谢。


更新:大家好,感谢您的帮助,但所有这些方法都返回了同样的错误:“错误CS1502:为‘BishopFlemingFunctions.addCommas(INT)’的最佳重载的方法匹配具有一些无效参数“(或根据我使用的数字类型进行变化)。任何想法?

+0

该错误消息表明您在显示`string`参数的同时使用`int`参数调用方法。 – 2010-11-30 12:17:31

+0

嗨 - 是的,那是在尝试下面的方法后,而不是我的原始代码。 – Oli 2010-11-30 12:31:19

回答

0

那么,你正在发送一个字符串。它看起来像你想要一个货币返回

  1. 为什么你传递一个字符串的方法,如果它是一个数值?
  2. String.Format将返回一个字符串,因此不需要再次使用.ToString()。
  3. {0:C} =货币格式,如果你不想让$然后使用{0:N}
  4. 不知道你有,但你可能需要做一个明确的转换,如果你把它作为一个字符串(十进制)现金

return String.Format(“{0:c}”,(decimal)cash);

返回的String.Format( “{0:N}”,(十进制)现金);

,但我想应该是这样的:

public static string addCommas(decimal cash) 
{ 
return String.Format("{0:c}", cash); 
} 

但就是这样一个简单的声明我没有看到在使其成为一个方法的逻辑,如果你的方法是一个线,在大多数情况下,它不是一种方法。

+0

您无法将字符串转换为小数,您需要Convert.ToDecimal或Decimal.Parse(或TryParse)。 – 2010-11-30 12:19:37

1

为了应用数字格式,你必须通过cash的号码类型(INT,双,浮法等)

0

注意现金参数是double型和.##在格式化字符串的结尾美分。

编辑

下面是全部代码:

static class Program { 
    static void Main() { 
     double d = 123456789.7845; 
     string s = addCommas(d); 
     System.Console.WriteLine(s); 
    } 

    public static string addCommas(double cash) { 
     return string.Format("${0:#,###0.##}", cash); 
    } 
} 

这版画 “$ 123,456,789.78” 来安慰。如果您收到

error CS1502: The best overloaded method match for 'addCommas(double)' has some invalid arguments

检查,以确保你正确地调用这个函数,你实际上是在传递正确的数据类型。我鼓励你复制/粘贴我上面的代码并运行它 - 本身。

0

我有我的自定义类的方法,以任何数字

public static string ConvertToThosandSepratedNumber(object number) 
{ 
    string retValue = ""; 
    retValue = string.Format("{0:N0}", Convert.ToDecimal(number)); 
    return retValue; 
} 
0

这里是一个非常有效的方式来添加逗号为千位等 这是写在VB.net转换。 它不适用于负数。

Public Function AddCommas(number As Integer) As String 
    Dim s As String = number.ToString() 
    Dim sb As New StringBuilder(16) 
    Dim countHead As Integer = s.Length Mod 3 
    If countHead = 0 Then countHead = 3 
    sb.Append(s.Substring(0, countHead)) 

    For I As Integer = countHead To s.Length - 1 Step 3 
     sb.Append(","c) 
     sb.Append(s.Substring(I, 3)) 
    Next 

    Return sb.ToString() 
End Function