On Wed, 8 Aug 2001, Vasiliu Constantin wrote:

> Stiam de astea si l-am dat cu capu' dar nu despre asta e vorba, pentru
> ca ceil(0.1)=1 si ceil(0.6)=1; similar la floor (0/0)
> Aici e vorba de o finetze in jurul lui 0.5 fix, adica: 0.49999=>0;
> 0.5000001=>1 dar 0.5000000=>0 sau 1 dupa cum am scris mai inainte
> Din cite imi amintesc eu e o simpla conventie intre matematicienii si
> contabilii din diferite tzari. 

     Pai si care e problema? Poti foarte usor sa scrii ceva de genul:

double round0(double x)
{
  return( (x - (int)(x)) > 0.5 ? ceil(x) : floor(x) );
}

double round1(double x)
{
  return( (x - (int)(x)) >= 0.5 ? ceil(x) : floor(x) );
}

     ... care fac exact ceea ce vrei tu:

     round0(0.50000) = 0
     round1(0.50000) = 1

     Desigur, pentru numere negative mai trebuie modificat putin dar
ideea
e aceeasi...

> In orice caz, pe la scoala invatasem int(x+0.5).

     Si asa merge... poti sa faci:

#define round0(x)           (int)(x+0.499999999999999L)
#define round1(x)           (int)(x+0.5) 

     ... se este chiar mai elegant... din nou, insa, e o problema cu
numerele negative, dar nu prea greu de rezolvat.


Toate cele bune,

--
Mihnea-Costin Grigore          [ "Tenebus Ipsilo Ibinem Catehens" ]
E-mail: [EMAIL PROTECTED]       Home Page: http://mgc8.virtualave.net
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui