PDA

Visualizza la versione completa : [DELPHI] arrotondamento 2 dedicimali.


matrix105
26-05-2004, 15:27
Salve ragazzi..

vi assillo con un nuovo problema..

allora io ho una dato, ipotizziamo X che uguale a 39.69..

devo calcolarmi un pagamento in 30-60-90gg
considerando xo che ho i pagametri didivisione variabili
nel senso che potrei avere 20%,40%,40% come pure 33,33% 33,33%, 33,33%

quest'ultima divisione quella + utilizzata e che mi sta creando non pochi problemi..

Quello che ho pensato io e di fare la suddivisione della variabiel X
per il 33% e fare poi la differenza per vedere si ho qualche resto per mettere poi nella 3a rata..(90gg)

HO SOLO BISOGNO ORA DI SAPERE SE ESISTE UNA FUNZIONE CHE
SE IO HO IPOTIZZIAMO 13.22987 MI DA COME RISULTATO 13.23 .. HO PROVATO LA FUNZIONE ROUND.. MA MI DA 13.. COSA CHE OVVIAMENTE NON
MI VA A GENIO!!

SPERO MI POSSIATE AIUTARE ANCORA UNA VOLTA!
GRAZIE A TUTTI!

SIMONE :bh:

mnkt
26-05-2004, 15:44
allora....

ti sistemo bene bene....

la funzione round arrotonda un numero all'intero.....

se te fai:

X = numero decimale
Y = numero dei decimali che vuoi arrotondare
Z = Risultato

Z = round ( (X * Y) ) / Y

e il gioco fatto.... :metallica

Ciao

:ciauz:

alka
26-05-2004, 15:51
Originariamente inviato da matrix105
HO SOLO BISOGNO ORA DI SAPERE SE ESISTE UNA FUNZIONE CHE
SE IO HO IPOTIZZIAMO 13.22987 MI DA COME RISULTATO 13.23 .. HO PROVATO LA FUNZIONE ROUND.. MA MI DA 13.. COSA CHE OVVIAMENTE NON
MI VA A GENIO!!
Se possiedi Delphi 7 (ma credo sia presente anche nella 6), puoi usare la funzione SimpleRoundTo che esegue l'arrotondamento al numero di cifre specificato, tra l'altro usando l'algoritmo comunemente impiegato in ambito fiscale.

La funzione Round non va bene poich utilizza il metodo di arrotondamento della CPU, la quale applica un algoritmo detto "Banker's Rounding" che distribuisce statisticamente l'errore arrotondando al numero pari pi vicino (quindi 0.5 viene arrotondato a 0, 1.5 a 2, 2.5 a 2 e cos via...).

Ciao! :ciauz:

matrix105
26-05-2004, 16:04
Ok, la funzione quella che cercavo..

Valore:= qry_Doc.FieldValues['TotDoc']*tbl_Dilazioni.FieldValues['Importo']/100;
Valore:= SimpleRoundTo(Valore,2);

ma quando la richiamo da Delphi 6 mi dice:

Undeclared Identifier 'SimpleRoundTo'

Va importata in qualche posto?

GRAZIE

alka
26-05-2004, 16:11
Devi aggiungere la unit Math alla clausola uses della unit in cui stai facendo uso della funzione SimpleRoundTo.

Ciao! :ciauz:

Loading