|
September 12th, 2014
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;
}
Господа программисты! Кто может объяснить тупому мне сакральный смысл этого метода? (Про машинное эпсилон знаю, но тут мысль явно пошла глубже)
|
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
Логично, да. Проблема в том, что подобный случай может возникнуть только если на входе полная чушь. В норме там значения порядка десятков, реже сотен и надо ловить разницу в несколько тысячных. |
|
|
LJ.Rossia.org |