2010-11-30 66 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