Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zaokruzivanje decimalnih brojeva u SQL 2005

[es] :: MS SQL :: Zaokruzivanje decimalnih brojeva u SQL 2005

[ Pregleda: 4766 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bigguy
borisav ignjatov
nista
zrenjanin

Član broj: 87859
Poruke: 267
*.zrlocal.net.



+1 Profil

icon Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 09:43 - pre 185 meseci
Radim jednu alikaciju u VS C# i koristim kao bazu MS SQL 2005. U okviru svoje aplikacije imam unos decimalnih vrednosti gde softverski iz nekih razloga nebi smeo da ogranicavam broj decimala koje se upisuju u aplikaciju ali mi je zato potrebno da se podaci cuvaju u bazi u formatu decimal sa dve decimale. Kako da resim problem zaokruzivanja vrednosti sa 12.45678 na 12.46?

Predpostavljam da se vec neko pozabavio ovim problemom jer i nije bas da je tako redak problem?! Napominjem da do sada nisam imao nekih znacajnijih kontakata sa radom u bazama.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 10:48 - pre 185 meseci
Pa imas dve opcije, ili da koristis ROUND(x, 2) pri insertu u tabelu (s tim sto rezultat ostaje u tipu u kojem je bio x) ili u tabeli kreiras polje tipa DECIMAL(n,2) gde ti n zavisi od toga koliko su ti veliki brojevi, u tom drugom slucaju kad insertujes float ili neki drugi decimal vece preciznost rezultat ce biti zaokruzen/konvertovan implicitno u dec(n, 2)
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

bigguy
borisav ignjatov
nista
zrenjanin

Član broj: 87859
Poruke: 267
*.zrlocal.net.



+1 Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 11:39 - pre 185 meseci
Pazi ja jesam postavio polje u SQL 2005 npr. decimal(5,2) i u njega sam insertovao npr. broj 13.24567, ali mi on u tabeli upise vrednost 13.24. Ovo nije tacna vrednost (trebalo bi da stoji 13.25) jer on samo odstrani sve vrednosti koje su iza druge decimale a pritom ne zaokruzuje drugu decimalu na osnovu odstranjenog dela. To meni konkretno treba, kako da zaokruzim drugu decimalu na osnovu onog ostatka koji se odstranjuje?
 
Odgovor na temu

.:Marvin:.
Taurunum

Član broj: 36626
Poruke: 94
*.smin-1.sezampro.yu.



Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 11:48 - pre 185 meseci
Tu bi ti round zavrsio posao.
A da li bi ti mozda odgovarala mogucnost da upises ceo podatak, pa da pri citanju radis zaokruzivanje? Mozda ima malo vise posla, ali ti mozda posle iz nekog razloga zatreba bas ono sto je korisnik upisao?
 
Odgovor na temu

bigguy
borisav ignjatov
nista
zrenjanin

Član broj: 87859
Poruke: 267
*.zrlocal.net.



+1 Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 11:58 - pre 185 meseci
Za sad mi odgovara save data u obliku jednostavnog zaokruzivanja na dve decimale. Reci mi samo kako da implementiram ROUND? Da li to trebam u kodu da postavljam ili negde u okviru opcija za definisanje polja SQL 2005? Moj kod za insert iz VS C# je jednostavan i ide preko TabeAdapter, otprilike ovako nesto:
tblTableAdapter.Insert((decimal)TextBox.Text.Trim());

 
Odgovor na temu

bigguy
borisav ignjatov
nista
zrenjanin

Član broj: 87859
Poruke: 267
212.200.180.*



+1 Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 12:40 - pre 185 meseci
Sorry Marvine ali kad bolje razmislim ipak bi mi tvoj predlog dobro dosao :) Nikad se nezna kada ce mi kasnije zatrebati korisnikov podatak. Molim te samo ako moze malo detaljnije objasnjenje jer, kako sam vec naveo, sa bazama nisam radio puno sem definisanja tabela i tome slicno.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 14:20 - pre 185 meseci
Pazi, decimal nije floating point, kao sto ni money to nije, decimal je broj sa fiksnim zarezom i interno se drugacije skladisti nego float i kad se radi implicitna konverzija iz float u decimal dolazi do nekog gubitka preciznosti. Medjutim to je marginalno i ovo mi je veoma neverovatno:
Citat:
Pazi ja jesam postavio polje u SQL 2005 npr. decimal(5,2) i u njega sam insertovao npr. broj 13.24567, ali mi on u tabeli upise vrednost 13.24

upravo sam probao ovo kod sebe i na sql2005 i 2008 i na oba je upisao 13.25. Mozda je tebi problem u klijentu koji koristis koji neispravno zaokruzi broj pre nego ga posalje sql serveru? Probaj iz management studia direktno... Sql server koristi roundup mehanizam za zaokruzivanje (slicno kao onaj sto ucismo u skoli samo sto se ne gleda parnost poslednje cifre vec se takav ostatak uvek zaokruzuje na gore, R(1.5) = 2, R(2.5) = 3), th mozda si ti ocekivao da 13.245 zaokruzi na 13.24?

Citat:
bigguy: Nikad se nezna kada ce mi kasnije zatrebati korisnikov podatak. Molim te samo ako moze malo detaljnije objasnjenje jer, kako sam vec naveo, sa bazama nisam radio puno sem definisanja tabela i tome slicno.

Ovo treba da ti zavisi od toga sta zapravo skladistis u tom polju. AKo su to iznosi stavki onda ih drzi zaokruzene zbog agregacije, SUM(ROUND) nije isto sto i ROUND(SUM) zbog parcijalnih ostataka i ovo je cest uzrok zasto u nekim programima na fakturama stavke sabrane zajedno digitronom ne daju total vec se razlikuju za poneku paru. Dakle, da bi ti bilo ko preporucio sta ti je bojle moramo da znamo sta je to sto zaokruzujes...
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mkaras
Marko Karas
Beograd

Član broj: 66087
Poruke: 427



+19 Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200530.01.2009. u 16:04 - pre 185 meseci
Nikada ne sakati podatke koje već imaš a mogu ti zatrebati. Čuvaj podatke onako kako ih dobijaš. Jedan od načina je da koristiš klijentsku aplikaciju za zaokruživanje koje ti treba. Ako to nije moguće ili ne želiš, kao osnovu za dalji rad koristi upit koji ti prikazuje ono što želiš. Ako i to ne želiš iskoristi pogodnost koju ti daje SQL server a to je da dodaš još jedno polje u tabelu koje će biti izračunatog tipa. Ne opterećuje server previše a trenutno imaš podatak za prikazivanje onako kako želiš čim uneseš pravu vrednost.
 
Odgovor na temu

.:Marvin:.
Taurunum

Član broj: 36626
Poruke: 94
*.smin-1.sezampro.yu.



Profil

icon Re: Zaokruzivanje decimalnih brojeva u SQL 200531.01.2009. u 11:17 - pre 185 meseci
Drugim recima, posto je covek nov: vecina se slaze da je najbolje da skladistis podatak kao float. A kad ti zatreba da ga prikazes i / ili racunas, onda zaokruzuj. Ali obrati paznju na primedbu o Round(sum) i Sum(Round).
Na primer, ako zelis da ti se prikaze zaokruzeno na dve decimale, SQL upit bi izgledao ovako nekako:

select round(KOLONA,2) -- zaokruzuje na 2 decimale
from TABELA

Posto koristis table adapter, nisam siguran kako bi se tu implementirao ovakav upit. Alternativa je da koristis data adapter, sto bi ti svakako pre ili kasnije zatrebalo pa probaj da proucis malo.

 
Odgovor na temu

[es] :: MS SQL :: Zaokruzivanje decimalnih brojeva u SQL 2005

[ Pregleda: 4766 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.