[ Sonique @ 01.12.2006. 08:18 ] @
| Pozdrav svima,
imam jedan problem koji nikako ne znam da rijesim. Naime, radim neku aplikaciju u Accessu te kada treba da Access sabere dva broja koja imaju vise decimala na dvije ili tri cedimale zbira on ispise netacan zbir.
Pr: 10,12012454556 + 3,325656 = 13,398
Ako ima iko ko bi znao ovo da rijesi, posto sam cuo da u Accessu postoji funkcija koja moze da ogranici broj decimala, mislim i sabiraka i zbira na dva, bio bih zahvalan.
Hvala |
[ BiloKoje @ 01.12.2006. 09:40 ] @
Nešto ne znam da Access pogrešno sabira. Moguće je da ako u formatu za prikaz postaviš recimo dve decimale da vidiš na ekranu recimo 2.55 a da Access pamti 2.55235.
Funkcija za zaokruživanje broja je Round i ima dva argumenta broj i broj decimala. Ako primeniš funkciju Round na dve decimale i odabereš format broja Standard Access pamti i prikazuje istu vrednost.
[ Kiro @ 03.12.2006. 01:44 ] @
Ja ne znam sta je ali imao sam sličan "problem" na Icentar smo pokusali rijesiti.
Pa evo možda ovdje neko zna
Citat:
Tabela je: Table1 sa poljima (ID-AutoNumber, Kolicina-Single i Cijena-Currency)
Kveri je: Query1 na osnovu gore pomenute tabele sa svim poljima i jednim izračunaim poljem Iznos = Kolicina*Cijena
Rezultat je slijedeći:
ID----------Količina-----------Cijena-------------Iznos
1--------------1------------------1,1----------------1,1
2--------------1,1----------------1-------------------1,10000002384186
Rezultat bi trebao u oba slučaja biti 1,1 a nije, ja ovo ne kontam nikako, ako stavim da je Kolicina-Double sve bude ok.
Može li neko pojasniti?????
Primjer:
http://www.icentar.com/attachm...achmentid=390&d=1138825269
[ BiloKoje @ 03.12.2006. 12:27 ] @
Naravno postoji razlika između Double i Single tipa podataka. I zovu se brojevi dvostruke, odnosno jednosrtuke tačnosti. Razlike nastaju zbog pretvaranja vrednosti iz binarnog u dekadni sistem. U praksi koristimo tip podatka koji zadovoljava konkretne potrebe. Kada sam komentarisao početni post i rekao da ne verujem da Access pogrešno računa, mislio sam na konkretan primer. (Pr: 10,12012454556 + 3,325656 = 13,398) Dakle da se greška javi na drugoj decimali. U primeru koji je dao Kiro greška je daleko manja i u praksi može da se zanemari, jer razlika na osmoj decimali kod izračunavanja vrednosti robe obično nije bitna. Ako želimo veću tačnost imamo mogućnost da koristimo double za sve vrednosti koje učestvuju u izračunavanju.
[ Kiro @ 03.12.2006. 22:42 ] @
Ma naravno da razlika na osmoj decimali nije bitna ovo sam slučajno otkrio i probavao na drugim compicima pa me zainteresovalo.
Ako je ovo odgovor:
Citat:
Razlike nastaju zbog pretvaranja vrednosti iz binarnog u dekadni sistem.
ok uredu
ali i dalje mi nije jasno zašto isti brojevi rade sa double i ca currency bez problema a neće sa single
[ Sonique @ 05.12.2006. 12:27 ] @
Hvala, funkcija Round je sve riješila
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.