Aggiunto metodo floor

git-svn-id: svn://10.65.10.50/trunk@3922 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-11-23 08:30:55 +00:00
parent 337c8d45bc
commit 41971bc0a3
2 changed files with 44 additions and 1 deletions

View File

@ -214,6 +214,21 @@ real& real::ceil (int prec)
return *this;
}
real& real::floor (int prec)
{
long double p = 1.0;
if (prec != 0)
{
p = ipow10(prec);
_dec *= p;
}
_dec = floorl(_dec);
if (prec != 0)
_dec /= p;
return *this;
}
real& real::trunc(int prec)
{
long double p = 1.0;
@ -568,7 +583,7 @@ real & real ::ceil (int prec)
DEC integer;
dint (&integer, ptr ()); // Extract the integer part
if (disgt (ptr (), &integer)) // If positive ...
addid (ptr (), &integer, 1); // ... add 1
else
@ -581,6 +596,30 @@ real & real ::ceil (int prec)
return *this;
}
real & real ::floor (int prec)
{
double p = 1.0;
if (prec != 0)
{
p = ::pow (10.0, -prec);
divdfd (ptr (), ptr (), p);
}
DEC integer;
dint (&integer, ptr ()); // Extract the integer part
if (dislt (ptr (), &integer)) // If negative ...
addid (ptr (), &integer, -1); // ... subtract 1
else
dcpy(ptr(), &integer); // If positive
if (prec != 0)
muldfd (ptr (), ptr (), p);
trail();
return *this;
}
real & real ::trunc (int prec)
{
dtrunc (ptr (), ptr (), prec);

View File

@ -74,6 +74,8 @@ public:
real& trunc(int prec = 0) ;
// @cmember Arrotonda al numero successivo (della precisione passata)
real& ceil(int prec = 0);
// @cmember Arrotonda al numero precedente (della precisione passata)
real& floor(int prec = 0);
// @cmember Assegna un reale
real& operator = (const real& a);
// @cmember Assegna un reale
@ -207,6 +209,8 @@ public:
real& trunc(int prec = 0) ;
// @cmember Arrotonda al numero successivo (della precisione passata)
real& ceil(int prec = 0);
// @cmember Arrotonda al numero precedente (della precisione passata)
real& floor(int prec = 0);
// @cmember Assegna un reale
real& operator =(double a);
// @cmember Assegna un reale (passato per indirizzo)