1. JavaScript / Говнокод #19939

    0

    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
    function floatToStringPrec(f, precisionDigits)
    {
        var PRECISION = Math.pow(10, precisionDigits);
        
        var integerPart = Math.floor(f);
        var fractionalPart = f % 1;
        if (fractionalPart == 0)
        {
            return integerPart.toString();
        }
        
        var zeroesInFracPart = -Math.log10(fractionalPart);
        if (Math.floor(zeroesInFracPart) == zeroesInFracPart)
        {
            zeroesInFracPart--;
        }
        else
        {
            zeroesInFracPart = Math.floor(zeroesInFracPart);
        }
        
        fractionalPart = Math.round(fractionalPart * PRECISION);
    
        while (fractionalPart % 10 == 0)
        {
             fractionalPart /= 10;
        }
        
        var zeroes = '';
        
        if (zeroesInFracPart > 0)
        {
            zeroes = Array(zeroesInFracPart + 1).join('0');
        }
        
        return integerPart.toString() + '.' + zeroes + fractionalPart.toString();
    }

    Преобразовать плавающего питуха в строку; сохранить не более precisionDigits цифр после запятой (остальные - округлить).

    Запостил: gost, 05 Мая 2016

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

    • А toFixed() можно использовать?
      Ответить
      • toFixed() оставляет в дробной части ровно столько цифр, сколько сказано, а если в ней меньше - дополняет нулями:
        >>> f = 12.189
        >>> f.toFixed(5)
        <<< "12.18900"
        >>> floatToStringPrec(f, 5)
        <<< "12.189"
        Ответить
        • f.toFixed(10).replace(/0+$/, "")
          Ответить
          • Почти:
            >>> f = 12.999999
            12.999999
            f.toFixed(5).replace(/0+$/, "")
            "13."


            Впрочем, только что обнаружил - этот случай и мой костыль обрабатывает неправильно - возвращает "12.1".
            Ответить
            • f.toFixed(10).replace(/\.?0+$/, "")
              Ответить
              • https://ideone.com/2IYQny
                Ответить
                • >>> DoIt(123.33666666)
                  <<< 123.33666
                  Ответить
                • Кстати, я тут недавно узнал, что у Microsoft есть парочка занятных скриптовых языков для любителей J.
                  Во-первых, JScript. Во-вторых, версия для .NET -- JScript.NET, где можно грабить корованы.
                  Ответить
                  • Ага, а ещё у них есть J# и J++. Наверное, это ещё круче!
                    Ответить
                    • "№.+.%: {
                          #$63@;
                      }
                      @#$~^/;
                      $*::@/+#;


                      Да простит меня Кегдан за незнание J и этот случайный набор символов
                      Ответить
                  • это для любителей экмы
                    Ответить
                    • Ни в коем случае! Ведь JScript не соблюдает стандарты ECMA:
                      https://msdn.microsoft.com/en-us/library/4tc5a343.aspx
                      Ответить
                  • лол) человек столько лет пишет на экме 262 и только узнал про jscript.

                    странный вы народ, жопаскриптеры
                    Ответить
                    • Честно говоря, я и про JavaScript и ECMAScript тоже недавно узнал. И про остальные языки - тоже.
                      Не все программировали веб-интерфейсы для танков при Сталине.
                      Ответить
                  • а еще есть jython
                    Ответить
                    • Жуйтон
                      Ответить
                    • js.js - для jрофессионалов
                      Один раз "Js" - много J, второй раз "Js" - много J. Js.Js - много-много J
                      Ответить
                      • Мне больше нравится vanilla.js - очень лёгкий и мощный фреймворк.
                        Ответить
                      • 10 10$<'J'
                        ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │J│J│J│J│J│J│J│J│J│J│
                        └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
                        Ответить

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