Aggiunto metodo floor
git-svn-id: svn://10.65.10.50/trunk@3922 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
337c8d45bc
commit
41971bc0a3
@ -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);
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user