1. Java / Говнокод #12255

    +79

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
     private static String dbl2str(Object obj) {
            String value;                        
            String str = obj.toString();
            if (str.indexOf('E') != -1) {
                //System.out.print("1  ");
                String[] qwe = str.split("E");
                String newstr = "";
                int step = Integer.parseInt(qwe[1]);
                for (int ind = 0; ind < qwe[0].length(); ind++) {
                    if (step > 0) {
                        if ((ind == (step + 2)) && (ind != qwe[0].length())) {
                            newstr = newstr + '.';
                        }
    
                        if (str.charAt(ind) != '.') {
                            newstr = newstr + str.charAt(ind);
                        }
                        if ((ind == qwe[0].length() - 1) && (ind <= step)) {
                            for (int ind2 = 0; ind2 < (step + 1 - ind); ind2++) {
                                newstr = newstr + "0";
                            }
                        }
                    } else {
                        if (ind == 0) {
                            newstr = newstr + "0.";
                            for (int ind3 = 0; ind3 > step + 1; ind3--) {
                                newstr = newstr + "0";
                            }
                        }
                        if (str.charAt(ind) != '.') {
                            newstr = newstr + str.charAt(ind);
                        }
                    }
                }
                value = newstr;
            } else {
                value = obj.toString();
            }
             return value;                       
        }

    жгем, товарищи! Double to String!

    Запостил: orion, 06 Декабря 2012

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

    • Ну вот вы смеетесь, а я, например, не знаю, как заранее узнать, будет ли строка распечатана в научной записи, или в обычной десятичной. Тем более, на сколько я знаю, Ява не предлагает никаких инструментов чтобы избежать научную запись, или как-то повлиять на то, когда она будет / не будет использоваться. Решение тут, конечно, немного "странное", но цель как бы понятна...
      Ответить
      • http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html
        Ответить
        • Может я плохо смотрел, но я не вижу там опции указать "никогда не использовать научную нотацию", но да, вижу, что можно указать степень Е.
          Ответить
          • Научная нотация? лолштоэта?
            Ответить
            • scientific notation. Хз. я учился не на русском, и поэтому не всегда знаю, как какие-то технические вещи правильно переводятся.
              Ответить
          • %f же
            http://ideone.com/chRHo4
            Ответить
            • Ооооо блин, не знал, чет всегда думал, что он по какому-то внутреннему механизму определяет, как меньше символов получится, и тот вариант и использует. Наверное с чем-то другим перепутал.
              Ответить
    • Отвлекаясь от наличия готового решения…

      qwe[0].length() в качестве операнда это бич и слёзы для культуры программирования! (Горько плачет).

      Впрочем, чего это я? О какой, простите, культуре речь?..
      Ответить

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