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

    +62.9

    1. 1
    2. 2
    3. 3
    4. 4
    public void setDoubleValue( double doubleValue ) {
        DecimalFormat myFormatter = new DecimalFormat("###.##");
        this.doubleValue=Double.valueOf(myFormatter.format(doubleValue));
    }

    Округление дробной части до двух знаков запятой? Даже если так, то как насчет статического члена класса?

    Запостил: guest, 13 Марта 2009

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

    • страйкер:
      и кому понадобилось хранить строковое представление double? :-\
      Ответить
    • Член класса this.doubleValue как раз типа double. Код активно мешал жить радостными исключениями при сериализации классов в XML, причем не на всех системах. Было излечено с помощью this.doubleValue = Math.round( doubleValue * 100 ) / 100.

      P.S. Автор - американец индийского происхождения, причем еще толковый.
      Ответить
    • страйкер:
      а... да. затупил. Double.valueOf возвращает именно double. Тогда код вдвойне бугага
      Ответить
    • funny-java.blogspot.com:
      А вот статическую переменную делать как раз нельзя. Объект java.text.DecimalFormat - не Thread-Safe, при обращении к этому методу из нескольких потоков одновременно будет бяка.

      См. http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html:

      Synchronization

      Decimal formats are generally not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
      Ответить
    • Дмитрий Левчук:
      Для локалей, где десятичной является запятая, код будет работать предельно интересно.

      Дмитрий
      Ответить

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