我现在有一个数字,
string num = "1234567.015";
我想把它格式化成  :   1,234,567.02
既整数部分每三位加一个',',小数部分取前两位,第三位四舍五入。
不使用 formart和round等函数,不调用.net后援方法的情况下,有没有好的解决方案。T-T

解决方案 »

  1.   

    为什么现成的formart不让用这是为哪般
    var dot = string.ToCharAraay().IndexOf('.');自己折腾吧
      

  2.   

            string num = "1234567.015";
            double _d = double.Parse(num);
            _d = ((int)(_d * 100) + ((_d * 1000) % 10 >= 5 ? 1 : 0)) / 100.0;
            Response.Write(_d);
            Response.End();
      

  3.   

    string MyFormat(string value)
    {
        var arr = value.Split('.');
        string s1 = string.Join("", arr[0].Select((x, i) => (arr[0].Length - i) % 3 == 0 ? "," + x.ToString() : x.ToString()).ToArray());
        if (arr.GetLength == 1) return s1; else return s1 + "." + arr[1];
    }
      

  4.   

            string num = "1234567.015";
            double _d = double.Parse(num);
            _d = ((int)(_d * 100) + ((_d * 1000) % 10 >= 5 ? 1 : 0)) / 100.0;
            Response.Write(_d.ToString("n2"));
            Response.End();
      

  5.   

            string num = "1234567.015";
            double _d = double.Parse(num);
            _d = ((int)(_d * 100) + ((_d * 1000) % 10 >= 5 ? 1 : 0)) / 100.0;
            string _n = _d.ToString();
            for (int i = _n.IndexOf('.'); i > 0; i=i - 3)
            {
                _n = _n.Insert(i, ",");
            }
            Response.Write(_n);
            Response.End();
      

  6.   

    string MyFormat(string value)
    {
        var arr = value.Split('.');
        string s1 = string.Join("", arr[0].Select((x, i) => (arr[0].Length - i) % 3 == 0 ? "," + x.ToString() : x.ToString()).ToArray());
        if (arr.GetLength == 1) return s1; else return s1 + "." + ((int.Parse(arr[1].PadRight(3, '0').SubString(0, 3)) + 5) / 10).ToString();
      

  7.   

    感谢liuchaolin,chaozhy,俩个方法一起用能解决以上问题。O(∩_∩)O     还有没有其他的算法=。=  越多越好
      

  8.   

    完美处理方案        string num = "23239394777777791346717263798292349823412312920213922342937841231234567.0155231232342123123123123234";
            string[] _ary = num.Split('.');
            int n = 6;
            for (int i = _ary[0].Length - 3; i > 0; i = i - 3)
            {
                _ary[0] = _ary[0].Insert(i, ",");
            }
            Response.Write("原数:" + num +"<br/>");
            Response.Write("保留" + n + "位小数:");
            Response.Write(_ary[0] + (_ary.Length == 2 ? (_ary[1].Length > n ? "." + _ary[1].Substring(0, n - 1) + (int.Parse(_ary[1].Substring(n - 1, 1)) + (int.Parse(_ary[1].Substring(n, 1)) >= 5 ? 1 : 0)) : "." + _ary[1]) : ""));
            Response.End();