1. C++ / Говнокод #16619

    +53

    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
    void nearest(double v) {
        double d = 0.1;
        double v2 = v + d;
        double v3;
        double v4;
        while (v2 != v) {
            v3 = v + d;
            v4 = v - d;
            d = d * 0.9;
            v2 = v + d;
        }
        qDebug() << QString::number(v2,'f',30) << QString::number(v3,'f',30) << QString::number(v4,'f',30);
    }
    
    void roundTest() {
        double v1 = 1.90;
        double v2 = 1.91;
        QString vr1 = QString::number((v1+v2)*0.5,'f',2);
        QString vr2 = QString::number((v1+v2)*0.500000000000000111022302462516,'f',2);
        qDebug() << vr1 << vr2;
    }
    
    #define DOUBLE_HALF 0.500000000000000111022302462516

    Когда-нибудь меня за это побьют

    Запостил: overloop, 29 Августа 2014

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

    • >> while (v2 != v)
      ну ты тискуешь, чувак
      Ответить
      • *рискуешь
        Ответить
        • Все мы ходим по лезвию бритвы. Кто-то употребляет наркотики, кто-то убивает людей. Я - сравниваю флоаты на равенство.
          Ответить
    • Когда-нибудь меня за это побьют
      Я вам даже скажу когда, как только кто-то передаст в вашу функцию ноль
      Ответить
      • Функция в проект не пойдёт, она останется в untitled.pro (что очевидно если обратить внимание на то что она никуда ничего не возвращает кроме пука в стдерр) и написана только для того чтобы грязно, быстро и без байтопердолинга (и без чтения рфц) найти вероятно ближайшее большее к 0.5 число двойной точности чтобы сломать Гауссово округление до более простого округления 4/5 (не уверен, кстати, что это удалось, надо потестить на разных диапазонах).
        Ответить
    • Ответить
      • bormand бить, bormand крушить!
        Ответить
        • bormand стирать!
          Ответить
          • Спасибо, что открыл глаза. А то я часто видел тут пустые комментарии и не мог понять, что это значит.
            Ответить
            • Этот комментарий был выпилен НлоЗог не дремлет!
              Ответить
    • Мне спалили как сделать с помощью union без байтомагии. Унижен.
      Ответить

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