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

    +86

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    double a = 47, b = 94;
    
            for (;; a += .5, b -= .5) {
                if (a == b) {
                    System.out.println(a);
                    break;
                }
            }

    ...ищем среднее.. (a+b)/2 категорически нельзя..

    Запостил: Bodia, 09 Октября 2010

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

    • Ооого.
      И это ж только для a < b. Иначе зацикливание.
      Ответить
    • причем это даже не функция(ладно, метод). и не параметры, а глобальные переменные(ладно, поля). причем они имеют тип double, а подход годится для целых. к примеру, среднее 0.1 и 0.5 так не найдешь
      Ответить
      • Люра фон Хаус, то, что к даблам применяется ==, вас не смущает?
        Ответить
        • сам == в одиночку нет, но вот что перед ним += да -= --вот здесь уже подозреваю, что злополучный машинный эпсилон вполне вероятен
          Ответить
        • Хорошее замечание! Совсем незадолго до Большого П мы пытались написать метрическую функцию для вещественных.
          Ответить
        • Кстати, хочу заметить, что при операциях +/- 0.5 потери точности представления вещественного числа не будет. Так что можно и прямым сравнением обойтись.
          Ответить
    • У кого-то в школе пробемы с матаном были...
      Ответить
    • Это явно онкомаркеры, точно вам говорю.
      Ответить

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