1. C# / Говнокод #9145

    +969

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    public static string ConvertNumberToString(double tmpStr)
            {
                string ret = "";
                try
                {
                    if (((long)tmpStr).ToString().Length > 3)
                    {
                        string len = ((long)tmpStr).ToString();
                        string[] strSplit = tmpStr.ToString().Split(',');
    
                        long tmpM = 0;
                        if (strSplit.Length > 1)
                            tmpM = Convert.ToInt64(strSplit[1]);
    
                        int count = (int)len.Length / 3;
                        ret = len.Substring(0, (len.Length - 3 * count));
                        for (int i = 0; i < count; i++)
                        {
                            ret += " " + len.Substring((ret.Length - i), 3);
                        }
                        if (tmpM > 0)
                        {
                            ret += "," + strSplit[1];
                        }
                    }
                    else
                        ret = tmpStr.ToString();
                }
                catch
                {
                }
                return ret.Trim();
            }

    Из той же оперы...

    Запостил: yorikim, 17 Января 2012

    Комментарии (19) RSS

    • Нам как-то лабу задавали писать. Числа(с запятой и в экспоненциальном виде) в строки, строки в числа без использования средств языка.
      Но судя по тому, что это работа с БД, а не лаба по циферкам... (сужу по прошлому посту ConvertDateTimeForSQL)
      Ответить
    • >
      int count = (int)len.Length / 3;
      ret = len.Substring(0, (len.Length - 3 * count));

      Ну это вообще генитально, в ret всегда будет нулевой символ строки len!
      Ответить
      • Нет, это зависит от остатка от деления на 3.
        Ответить
        • Но ведь там же len.Length сначала делится, потом умножается. То есть выполняются взаимоисключающие действия. После деления и умножения результат будет такой же как и до этого, или я не прав?
          Ответить
          • нет =) предположим что len="12345"
            Ответить
            • > len = "12345"
              5-3*5/3 = 0
              Ну и? Всегда ноль, независимо от длинны строки.
              Ответить
              • int count = (int)len.Length / 3; //5/3=1
                ret = len.Substring(0, (len.Length - 3 * count)); //5-3*1=2
                Ответить
                • Ох, извините, не учел приведение к типу Integer.
                  Ответить
                  • Нет там приведения, там просто целочисленное деление.
                    Ответить
                    • Ну хорошо, пусть так. Я не знаю сисярп.
                      Ответить
                      • А также все языки, в которых целочисленное деление обозначается как "/".
                        То есть Ada,C,C++,Php,Java...
                        Короче, ты только Дельфи знаешь.
                        Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий