PDA

View Full Version : [C/c++]confronto double


NA01
07-04-2007, 12:36
per generare una serie di casi di test mi si rende necessario confrontare alcuni valori di ritorno di tipo double con delle costanti.
come mi aspettavo il confronto "normale" fallisce miseramente, esistono modi "standard" per confrontare due double?

grazie, ciao!!!

NA01
07-04-2007, 12:40
ssssshhh
corro a nascondermi :D
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,current,delta):

ciaaaaooo

Aslo
11-04-2007, 08:56
ssssshhh
corro a nascondermi :D
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,current,delta):

ciaaaaooo

Mai sentito di questa macro/funzione/quello che è, sarà qualcosa di specifico della tua libreria di unit test...
Per confrontare due double il metodo standard è
if (abs(a - b) < epsilon) {
// fai qualcosa
}

dove 'epsilon' è una costante abbastanza piccola (il 'delta' della macro che hai postato?).

cionci
11-04-2007, 09:38
ssssshhh
corro a nascondermi :D
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,current,delta):

Questa è una macro definita da CppUnit ed ovviamente andrebbe usata solo nelle suite di test.

andbin
11-04-2007, 09:56
Per comparare 2 double in genere uso una funzione ("C") di questo tipo:
#include <math.h>

int CmpDouble (double a, double b)
{
return fabs (a - b) >= 0.000001 ? a < b ? -1 : +1 : 0;
}

NA01
11-04-2007, 20:43
Questa è una macro definita da CppUnit ed ovviamente andrebbe usata solo nelle suite di test.

ehm... si, mi ero scordato che i test erano fatti sulle cppunit :p