【问题标题】:Adding comma separators to numbers, asp.net向数字添加逗号分隔符,asp.net
【发布时间】:2014-07-23 03:55:12
【问题描述】:

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

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

我哪里错了?

谢谢。


更新:大家好,感谢您的帮助,但所有这些方法都返回相同的错误:“错误 CS1502:'BishopFlemingFunctions.addCommas(int)' 的最佳重载方法匹配有一些无效参数”(或变体取决于我使用的数字类型。)有什么想法吗?

【问题讨论】:

  • 该错误消息表明您正在使用 int 参数调用该方法,而您显示的是 string 参数。
  • 嗨 - 是的,那是在尝试以下方法之后,而不是使用我的原始代码。

标签: asp.net


【解决方案1】:

嗯,你正在发送一个字符串。看起来你想要一个货币回来

  1. 如果字符串是数值,为什么还要将它传递给方法?
  2. String.Format 将返回一个字符串,因此无需再次使用 .ToString()。
  3. {0:c} = 货币格式,如果您不想要 $,则使用 {0:n}
  4. 不确定是否必须这样做,但如果将其作为字符串传递给(十进制)现金,则可能需要进行显式转换

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

return String.Format("{0:n}", (decimal)cash);

但我认为应该是这样的:

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

但这是一个如此简单的语句,我看不出将其作为方法的逻辑,如果您的方法是一行,在大多数情况下,它不是方法。

【讨论】:

  • 您不能将字符串转换为小数,您需要 Convert.ToDecimal 或 Decimal.Parse(或 TryParse)。
【解决方案2】:

为了应用数字格式,您必须将 cash 作为数字类型(int、double、float 等)传递

【讨论】:

    【解决方案3】:

    注意,cash 参数的类型为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”打印到控制台。如果你得到

    错误CS1502:最好重载 'addCommas(double)' 的方法匹配 有一些无效的参数

    检查以确保您正确调用该函数并且您实际上传递了正确的数据类型。我鼓励您复制/粘贴我上面的代码并运行它 - 自行运行。

    【讨论】:

    • 大家好,感谢您的帮助,但所有这些方法都返回相同的错误:“错误 CS1502:'BishopFlemingFunctions.addCommas(int)' 的最佳重载方法匹配有一些无效参数” (或根据我使用的数字类型而有所不同。)有什么想法吗?
    【解决方案4】:

    我的自定义类有一个方法可以转换任何数字

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

    【讨论】:

      【解决方案5】:

      这是一种相当有效的方法来为数千个地方添加逗号等。 它是用 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
      

      【讨论】:

        猜你喜欢
        • 2020-07-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        相关资源
        最近更新 更多