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

Cudno ponasanje decimalnih brojeva

[es] :: Firebird/Interbase :: Cudno ponasanje decimalnih brojeva

[ Pregleda: 1098 | Odgovora: 16 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brkic
Ilija Brkic
Sombor

Član broj: 55360
Poruke: 396
*.dynamic.sbb.co.yu.



Profil

icon Cudno ponasanje decimalnih brojeva31.10.2007. u 09:31

u tabeli imam kolonu PROCENAT tipa decimal,probao sam da bude i float i double precision,real ali nista ne pomaze.

kada izvrsim upis u tabelu sa inser into ... u procenat se upise broj koji treba ali bez , -znaci umesto 1,23 on upise 123

kada rucno u procenat upisem 1,23 on ga takvog i snimi i sve je OK
ili ako upisem preko q.fieldbyname('procenat').asstring :=pom; gde je pom izracunata vrednost procenta isto bude OK.

Kako da resim problem sa insert into ???
jel neko imao takvih problema ??
31.10.2007. u 09:31 

Miloš Baić

Član broj: 72468
Poruke: 1097
*.dialup.neobee.net.

Sajt: www.2advanced.com


Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 10:04
Citat:

Da li si atribut deklarisao sa:
1) decimal
2) decimal(16,2)?

Umesto toga, hteo sam napisati, da li si atribut probao deklarisati:
1)DOUBLE PRECISION
2)NUMERIC(n,m)

Izvinjavam se.

Ako imaš polje u tabeli deklarisano kao NUMERIC(n,m), a uneseš 123, Firebird će taj broj upisati kao 123,m, a m predstavlja broj iza decimalnog zareza. Ako uneseš 1,23, te m ima vrednost, npr., 4, onda će Firebird tu vrednost evidentirati kao 1,2300.

[Ovu poruku je menjao Miloš Baić dana 31.10.2007. u 12:00 GMT+1]
If you go out of your mind, do it quietly, so as not to disturb those around you...
31.10.2007. u 10:04 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1079
*.adsl-1.sezampro.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 10:11
> tabeli imam kolonu PROCENAT tipa decimal,probao sam da bude i float i double precision,real ali nista ne pomaze.

NUMERIC se uglavnom preferira u odnosu na DECIMAL.

> kada izvrsim upis u tabelu sa inser into ... u procenat se upise broj koji treba ali bez , -znaci umesto 1,23 on upise 123
> kada rucno u procenat upisem 1,23 on ga takvog i snimi i sve je OK

Pokaži tačnu definiciju tabele i kompletnu insert naredbu.
31.10.2007. u 10:11 

dogriz
Sombor

Član broj: 29744
Poruke: 177
89.216.227.*



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 10:17
Hajde da se nadovežem na ovu temu - da li je neko primetio da DoublePrecision zna da pravi grešku?
Npr. upišem broj 3 u bazu, a on bude snimljen kao 2,9999999 i sl.
To mi se dešavalo sa FB1.5 i nekim bazama gde mi je bilo potrebno upisivanje velikog broj decimala... U FB2.0 nisam ni probao kako ovo radi, jer sam morao problem da rešim na drugi način.
31.10.2007. u 10:17 

Brkic
Ilija Brkic
Sombor

Član broj: 55360
Poruke: 396
*.dynamic.sbb.co.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 11:12
@Miloš Baić probao sam i decimal(16,2) ali nista

CREATE TABLE promene(id int NOT NULL,ime Char(35),br1 int,br2 int,procenat numeric) CONSTRAINT PK_promene PRIMARY KEY (id))
iz tabele izcitava podatke i upisuje u promene
pom8:=floattostr((br2*100)/br1)-100); onda svojom funkciom broj smanjim na 2 decimale
insert into promene (id,ime,br1,br2,,procenat) values('+QuotedStr(pom)+','+QuotedStr(q3.fieldbyname('ime').asstring)+','+QuotedStr(q3.fieldbyname('br1').asstring)+',
'+QuotedStr(q3.fieldbyname('br2').asstring)+','+QuotedStr(pom8)+')');

sve se dobro upise sem procenta bez " , "
kada posebno proverim pom8 i QuotedStr(pom8) daju rezultat 1,23 ali upise u tabelu 123

kada PROCENAT stavim da bude char onda sve lepo radi bez greske,ali tada ne mogu da vrsim sortiranje PROCENTA po ascendind i descending
31.10.2007. u 11:12 

dogriz
Sombor

Član broj: 29744
Poruke: 177
89.216.227.*



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 12:36
Mislim da ti je problem u onom ",". Pokušaj da umesto QuotedStr(pom8) upišeš QuotedStr('1.23') za probu. Ako prođe, problem je u DecimalSeparator-u, kog ćeš morati da prebaciš iz "," u "."
31.10.2007. u 12:36 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1079
*.adsl-1.sezampro.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 13:01
> kada posebno proverim pom8 i QuotedStr(pom8) daju rezultat 1,23 ali upise u tabelu 123
> kada PROCENAT stavim da bude char onda sve lepo radi bez greske,ali tada ne mogu da vrsim sortiranje PROCENTA po ascendind i descending

Ti si polje PROCENAT zapravo deklarisao kao integer koji ne dozvoljava realne brojeve. Ako hoćeš realne onda ga moraš deklarisati sa odgovarajućim precisionom i scalom (npr NUMERIC(15,3)), pogledaj uputstvo za detalje i objašnjenja.
31.10.2007. u 13:01 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1079
*.adsl-1.sezampro.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 13:10
> Hajde da se nadovežem na ovu temu - da li je neko primetio da DoublePrecision zna da pravi grešku?
> Npr. upišem broj 3 u bazu, a on bude snimljen kao 2,9999999 i sl.
> To mi se dešavalo sa FB1.5 i nekim bazama gde mi je bilo potrebno upisivanje velikog broj decimala...

Nije to vezano za FB, već za način kako funkcioniše sistem za rad sa pokretnim zarezom, nemoguće je precizno predstaviti sve brojeve pa se koristi aproksimacija, ista je stvar i u Delphiu. Npr ako deklarišeš promenljivu tipa double i upišeš 3 on se zapravo čuva kao 2,999 (pa veliki broj devetki). Kada se takva vrednost preuzme iz baze u klijent programu trebalo bi da se dobije 3. Ako si ti direktno to polje iz baze castovao u char onda se doista dobija takav rezultat, ali ako prethodno castuješ u numeric pa u char onda bi trebalo da bude dobro.
31.10.2007. u 13:10 

Brkic
Ilija Brkic
Sombor

Član broj: 55360
Poruke: 396
*.dynamic.sbb.co.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva31.10.2007. u 13:35
Resen proble,problem je u . i ,
ulaznim decimalnim brojevima se , mora prebaciti u . i onda u tabeli pise sa ,
ako je ulazni dec broj sa , onda u tabeli nema ni . ni ,

Mozda nekom zatreba.
hvala svima na pomoci.
31.10.2007. u 13:35 

schild
Dejan Schild
Subotica

Član broj: 59888
Poruke: 67
*.legendww.com.

Sajt: www.topcode.co.yu


Profil

icon Re: Cudno ponasanje decimalnih brojeva01.11.2007. u 08:40
Citat:
Brkic: Resen proble,problem je u . i ,
ulaznim decimalnim brojevima se , mora prebaciti u . i onda u tabeli pise sa ,
ako je ulazni dec broj sa , onda u tabeli nema ni . ni ,

Da, to sam i ja primetio.
Recimo: CAST('110,1' as DOUBLE PRECISION) ce vratiti 1101 !?

Da li je to bug, ili ima neke logike u tome?
01.11.2007. u 08:40 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1079
*.adsl-1.sezampro.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva01.11.2007. u 08:51
> Recimo: CAST('110,1' as DOUBLE PRECISION) ce vratiti 1101 !?
> Da li je to bug, ili ima neke logike u tome?

Nije bug, ',' je separator hiljada a '.' decimalni separator.
01.11.2007. u 08:51 

schild
Dejan Schild
Subotica

Član broj: 59888
Poruke: 67
*.legendww.com.

Sajt: www.topcode.co.yu


Profil

icon Re: Cudno ponasanje decimalnih brojeva01.11.2007. u 09:55
Citat:
savkic: > Recimo: CAST('110,1' as DOUBLE PRECISION) ce vratiti 1101 !?
> Da li je to bug, ili ima neke logike u tome?

Nije bug, ',' je separator hiljada a '.' decimalni separator.
Pa jeste, ali onda bi se moglo očekivati i da vrati 110100?
Mislim, tako je kako je, bitno je da znamo kako funkcioniše.
01.11.2007. u 09:55 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1079
*.adsl-1.sezampro.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva01.11.2007. u 20:03
> Pa jeste, ali onda bi se moglo očekivati i da vrati 110100?

Otkud ti to, vrlo je jednostavno, prilikom konverzije izbaci sve separatore hiljada na koje naiđe i šta ostane je krajnji broj. Da li je separator ispravno postavljen ili ne se ne gleda.
01.11.2007. u 20:03 

Brkic
Ilija Brkic
Sombor

Član broj: 55360
Poruke: 396
*.dynamic.sbb.co.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva15.11.2007. u 22:21
kako da definisem promenljivu da bude broj ali da moze da je zapamti kao 10,00 ?? Sve koje sam probao pamte samo 10 dok na svakom fiskalnom racunu ima 10,00

kada u Alatu pogledam zapise budu 10,00 ali ih u tabeli ispisuje samo 10

[Ovu poruku je menjao Brkic dana 16.11.2007. u 00:02 GMT+1]
15.11.2007. u 22:21 

schild
Dejan Schild
Subotica

Član broj: 59888
Poruke: 67
*.legendww.com.

Sajt: www.topcode.co.yu


Profil

icon Re: Cudno ponasanje decimalnih brojeva16.11.2007. u 11:05
Citat:
Brkic: kako da definisem promenljivu da bude broj ali da moze da je zapamti kao 10,00 ?? Sve koje sam probao pamte samo 10 dok na svakom fiskalnom racunu ima 10,00
kada u Alatu pogledam zapise budu 10,00 ali ih u tabeli ispisuje samo 10
Koji ti je to moćni, o Alat? Kombinerke?
16.11.2007. u 11:05 

savkic
Igor Savkić

Član broj: 92186
Poruke: 1079
*.adsl-2.sezampro.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva16.11.2007. u 21:15
> kako da definisem promenljivu da bude broj ali da moze da je zapamti kao 10,00 ?? Sve koje sam probao pamte samo 10 dok na svakom
> fiskalnom racunu ima 10,00

Tebi treba formatiranja brojeva za prikaz u klijent programu, to nema veze sa bazom. Ako koristiš Delphi onda je to DisplayFormat svojstvo.
16.11.2007. u 21:15 

Brkic
Ilija Brkic
Sombor

Član broj: 55360
Poruke: 396
*.dynamic.sbb.co.yu.



Profil

icon Re: Cudno ponasanje decimalnih brojeva17.11.2007. u 07:14
>schild malo ozbijnosti

1. nisu 'Kombinerke' vec 'kombinirke'
2. a ni jedno ni drugo nego 'kombinovana klesta'
cisto da znas da se ne brukas

inace alat je IBOConsole i IB Expert

hvala savkicu na odgovoru,probacu.
17.11.2007. u 07:14 

[es] :: Firebird/Interbase :: Cudno ponasanje decimalnih brojeva

[ Pregleda: 1098 | Odgovora: 16 ]

Postavi temu Odgovori

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