Portál AbcLinuxu, 14. května 2025 00:06
if (t == det)
:
#define EPS 1e-08 double dxa, dya, dxb, dyb, dx1, dy1, det, t, det_eps, t_eps; det = dxa * dyb - dya * dxb; det_eps = EPS * (abs(dxa) + abs(dyb) + abs(dya) + abs(dxb)); t = dx1 * dyb - dy1 * dxb; t_eps = EPS * (abs(dx1) + abs(dyb) + abs(dy1) + abs(dxb)); if (abs(t-det) < abs(t_eps) + abs(det_eps))Matematicke oddovodnenie tu radsej neuvadzam. Budem vdacny za kazdy odkaz na nejaku literaturu na webe, rsp. za Vase riesenie.
#define EPS 1e-8
#define FLOAT_EQUAL(x,y) (abs((x)-(y))<EPS)
if (FLOAT_EQUAL(t,det)) ...
x = 1000000000.1
a y = 4.5
det = x * y
Tu zrejme asi nebude korektne eps = 1e-8
pre det
, ci ano ? Chyba pri cisle y sa totiz zmnohonasobi a uz to nebude stare dobre cislo 1e-8
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.