steinkrauz - Моск кончился

> Recent Entries
> Archive
> Friends
> User Info

September 12th, 2014


Previous Entry Add to Memories Tell A Friend Next Entry
05:44 pm - Моск кончился
static bool diff(double a, double b) {
    double d = Math.Abs(a - b);
    double v = Math.Abs(a) + Math.Abs(b);
    if (d < 0.001) return false;
    if (v > 0) {
        double z = d / v;
        if (z > 0.002) return true;
    }
    return false;
}
Господа программисты! Кто может объяснить тупому мне сакральный смысл этого метода? (Про машинное эпсилон знаю, но тут мысль явно пошла глубже)

(4 comments | Leave a comment)

Comments:


From:(Anonymous)
Date:September 12th, 2014 - 05:58 pm
(Link)
какого метода
From:(Anonymous)
Date:September 12th, 2014 - 07:49 pm
(Link)
Makes no sense at all.
From:(Anonymous)
Date:September 12th, 2014 - 08:03 pm
(Link)
ну, какой-то смысл есть, если, допустим,
a=1e10, b=1.0001e10, то это, скорее всего,
два одинаковых числа, хоть разность больше 0.001
[User Picture]
From:[info]steinkrauz
Date:September 12th, 2014 - 08:20 pm
(Link)
Логично, да.
Проблема в том, что подобный случай может возникнуть только если на входе полная чушь. В норме там значения порядка десятков, реже сотен и надо ловить разницу в несколько тысячных.

> Go to Top
LJ.Rossia.org