Jawa / Говнокод #13884 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
/**
   * Форматирует double, c arround кол-вом знаков после запятой
   * @param d double
   * @param arround int
   * @return String
   */
  public static String formatDouble(double d, int arround) {
    if (arround > 6) {
      throwIllegalFormat();
    }
    StringBuffer sb = new StringBuffer(10);
    boolean minus = d < 0;
    if (minus) {
      d = -d;
    }
    for (int i = 0; i < arround; i++) {
      d *= 10;
    }
    long l = (long) (d + 0.000000001);
    do {
      char digit = (char) ('0' + (l % 10));
      l = l / 10;
      sb.append(digit);
      if (--arround == 0) {
        sb.append('.');
      }
    } while (l != 0 || arround >= 0);
    if (minus) {
      sb.append('-');
    }
    return sb.reverse().toString();
  }

Запостил: glprizes glprizes, (Updated )

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

  • a че, в жабе нет готовых методов для форматирования, по-моему они там были).

    п.с. зачем изобретать свой велосипед.
    Ответить
  • Навскидку, могу предположить 2 варианта: Java ME (или ещё чего хуже), задание школьнику.
    Школьник бы не написал throwIllegalFormat(), это был бы перебор.
    Нет проверки на слишком большое double d и переполнение long, по-видимому, d это проценты. Но тогда -100% (слив депо) в буфер не влезут, однако. По-видимому, это уже будет неважно, клиент в состоянии аффекта разобьёт девайс о стену.
    Для полного драйва можно было бы не пользоваться приведением к long, а вытащить мантиссу из double.
    Ответить
  • старый добрый Math.floor()
    причем автор знает и StringBuffer, и StringBuffer.reverse()
    Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8