Site personal - rotunjirea numerelor din acces

Funcție încorporată

Utilizați funcția Round () în sursa de date a câmpului de text sau în câmpul de interogare calculat.

Să presupunem că aveți o astfel de expresie în linia "Câmp" din proiectantul de interogări:






Taxă: [Cost] * [Rata de impozitare]
Pentru a rotunji la cel mai apropiat penny, folosiți:
Taxă: Runda ([Cost] * [Rata de impozitare], 2)

Rotunjirea în jos

Pentru a rotunji toate cifrele fracționate la cel mai apropiat număr întreg, utilizați Int ():
Int ([MyPole])

Toate aceste numere vor fi rotunjite până la 2: 2,1, 2,5, 2,8 și 2,99.

Pentru a rotunji până la cel mai apropiat penny (de ex. 10.2199 ruble se face 10.21 ruble), se înmulțește cu 100, se rotunjește, apoi se împarte cu 100:
Int (100 * [MyPole]) / 100

Observați că acest lucru este obținut prin rotunjirea valorilor negative: Int (-2,1) dă -3, deoarece acesta este un întreg de jos. Pentru a rotunji spre zero. folosiți Fix () în loc de Int ():
Fixați (100 * [MyPole]) / 100

Începeți

Pentru a rotunji până la cel mai apropiat număr întreg mai mare, utilizați metoda în care Int () rotunjește numerele negative:
- Int (- [MyPole])

Așa cum am arătat mai sus, Int (-2.1) rotunjește până la -3. Prin urmare, această expresie rotunjește între 2.1 și 3.

Pentru a rotunji până la cel mai apropiat penny, înmulțiți cu -100, rotunde și împărțiți cu -100:
Int (-100 * [MyPole]) / -100

Rotunde până la cele mai apropiate 5 copeici

Pentru a rotunji la cele mai apropiate 5 cenți, multiplicați numărul cu 20, rotiți-l și împărțiți cu 20:
Rotundă (20 * [MyPole], 0) / 20

În mod similar, pentru a rotunji la cel mai apropiat trimestru, înmulțiți cu 4, rotunde și împărțiți cu 4:
Rotundă (4 * [MyPole], 0) / 4

Rotunde până la 1000 de ruble.

Funcția Round () din Excel ia numere negative ca numărul de locuri din virgulă, de exemplu. Runda (123456, -3) rundă până la 1000. Din păcate, funcția accesoriu nu acceptă acest lucru.

Pentru a rotunji la cele mai apropiate 1000 de ruble. împărțiți cu 1000, rotunjiți și înmulțiți cu 1000. Exemplu:
1000 * Runda ([Cost] / 1000, 0)

Pentru a rotunji până la 1000 de ruble. în jos. împărțiți cu 1000, obțineți un număr întreg și înmulțiți cu 1000. Exemplu:
1000 * Int ([Cost] / 1000)

Pentru a rotunji până la vârful a 1000 de ruble. împărțiți cu 1000 și înmulțiți cu -1 înainte de a obține o valoare întregă. exemplu:
-1000 * Int ([Cost] / -1000)

Pentru a rotunji în partea de zero. utilizați Fix () în loc de Int ().







În mod alternativ, funcția de utilizator a lui Ken Goetz se comportă exact așa cum a fost reluată funcția Excel.

De ce să rotunji?

Există un număr de zecimale pentru câmpurile din tabel / interogare și pentru casetele de text din formular / raport. Această proprietate afectează numai modul în care este afișat câmpul. dar nu cum este stocat. Numărul arată rotunjit, dar când adăugați un număr de numere (de exemplu, într-o notă de raport), rezultatul nu poate "bate".

Rotiți acest câmp când efectuați calculul și suma totală va converge.

Acest lucru se aplică și câmpurilor de bani. Accesul afișează câmpurile de bani rotunjite la cel mai apropiat penny, dar stochează valoarea lor la o suta parte dintr-un ban (4 zecimale).

Deplasarea bancară

Funcția Round () din Access utilizează "rotunjire bancară". Când ultima cifră semnificativă este de 5, ea se apropie de cel mai apropiat număr par. Astfel, 0,125 este rotunjit la 0,12 (2 perechi), în timp ce 0,135 este rotunjit la 0,14 (4 perechi).

Punctul principal aici este egalitatea: 1,2,3 și 4 sunt rotunjite. 6,7,8 și 9 - în sus. 0 nu necesită rotunjire. Deci, dacă 5 este întotdeauna rotunjit, veți obține rezultate "mutate" - 4 cifre sunt rotunjite în jos și 5 sunt în sus. Pentru a evita acest lucru, "a treia extra" (5) este rotunjită în conformitate cu figura precedentă, care elimină inegalitatea.

Eroare în virgulă mobilă

Valorile fractionale sunt de obicei tratate de calculator ca numere în virgulă mobilă. Câmpurile de accesorii ale tipurilor de precizie Double sau Single se referă la acest tip. Tipul de "Double Accuracy" oferă aproximativ 15 cifre de precizie, singurul este de 8 caractere (cum ar fi un calculator de mână).

Dar aceste numere sunt aproximative. La fel cum 1/3 necesită un număr infinit de caractere într-un sistem zecimal, majoritatea numerelor de puncte în virgulă nu pot fi reprezentate exact într-un sistem binar. Wikipedia explică problema acurateței. cu care vă întâlniți, operând cu numere în virgulă mobilă.

Rezumatul este că numerele extreme nu pot fi rotunjite așa cum vă așteptați, datorită faptului că valorile reale și valorile afișate nu se potrivesc. Acest lucru devine evident în special atunci când se verifică rotunjirea băncii.

O modalitate de a evita astfel de probleme - utilizarea datelor puncte fixe sau mastshabirovannye chisla.Tip „Bani“ în Access este un tip de punct fix: el păstrează întotdeauna 4 zecimale.

De exemplu, deschideți fereastra imediată (Ctrl + G) și tastați:
. Rotundă (CCur (.545), 2), rotundă (CDbl (.545), 2)
Tipul de bani (primul) returnează 0,54, în timp ce Precizia dublă este de 0,55. Rundele monetare corect (până la numărul 4); tipul punctului în virgulă (dubla precizie) este incorect. În mod similar, dacă încercați să 8995, bani rotunjite în mod corect în sus (la numărul chiar 0), în timp ce tipul de dublu de precizie se va rotunji în jos (invalid).

Tipul de bani se ocupă doar cu 4 zecimale. Utilizați un tip scalabil de Decimal dacă aveți nevoie de mai multe zecimale.

Data și orele rotunjite

Rețineți că tipul de dată / oră din Acces este un tip special de tip de virgulă mobilă, în care partea fracționată reprezintă ora din zi. Prin urmare, câmpurile de tipul Date / Ora cu componenta de timp sunt, de asemenea, supuse erorilor de rotunjire.

Funcția de mai jos rotunjește data / ora până la numărul specificat de secunde. De exemplu, pentru a rotunji la cea mai apropiată jumătate de oră (30 * 60 secunde), utilizați:
= RoundTime ([My DateFromTime], 1800)

concluzie

Pentru o explicație tehnică mai detaliată a teoriei de rotunjire în general, a se vedea articolul lui Clive Maxfield. O introducere în algoritmi de rotunjire diferite.







Articole similare

Trimiteți-le prietenilor: