[ fragolan @ 27.02.2004. 04:36 ] @
Imam jedan big problem sa MSHFlexGrid kontrolom. Naime desava mi se da kad filtriram neke podatke u bazi i rezultat prikazujem u MSHFlex-u decimalne zapise tipa 0,6 dobijem prikazane kao 0,599999999999998. Kako ovo spreciti ili ukloniit?

Citat:
Ne znam stvarno nisam pameten


[Ovu poruku je menjao mladenovicz dana 27.02.2004. u 13:43 GMT]
[ BlueSoniq @ 27.02.2004. 09:49 ] @

Pa imas funkciju Round( nekibroj, broj_decimalnih_mesta)
[ mladenovicz @ 27.02.2004. 10:13 ] @
Pogledaj Format funkciju.
[ fragolan @ 28.02.2004. 00:43 ] @
Hvala na sugestijama, ali njih sam vec probao.
primer: u bazi je upisano da je cena proizvoda 0.6. MSHFlex ga prikazuje kao 0.599999999998
kada probam da funkcijom Round zaokruzim vrednost iz MSHFlex celije javlja se sledeci problem:
ako promenljivu definisem kao currency onda izbacuje gresku overflow
Code:

Dim cena As Currency
cena = Round(gridPr.TextMatrix(gridPr.Row, 7), 2)


ako je ne definisem onda je vrednost promenljive cena 6E+16

Kada koristim Format funkciju onda je jos gore
Code:

cena = Format(gridPr.TextMatrix(gridPr.Row, 7), "##.##0.00")

vrednost promenljive cena je 599999999999800.00 ili ako promenim "##.##0.00" u "##,##0.00" onda je vrednost 59.999.999.999.998
U bazi je lepo upisano 0.6, pri stampi Reporta stampa 0.6, samo MSHFlex vidi decimalno mesto sa ovoliko 9 )).
Da li mozda kod upisivanja u bazu trebam mozda koristim neku posebnu funkciju za decimalne brojeve? Nema logike jer ga lepo upisuje, ali ga ovo cudo )) MSHFlex lose cita

Citat:
A mozda da se manem kompjuter? Ne znam, stvarno nisam vise pametan
[ Marko_L @ 28.02.2004. 15:34 ] @
Probaj sa Val, ovako:
Code:

Dim cena As Currency
cena = Val (gridPr.TextMatrix(gridPr.Row, 7))
[ BlueSoniq @ 28.02.2004. 16:39 ] @
I ja sam sam imao isti problem kod izracunavanja npr. marze ili neceg slicnog i odlicno sam ga resio pomocu Round funkcije. Mislim da je greska kod toga sto pretvaras polje u Currency. Pretvori celo polje u string ili neku numericku promenljivu pa posle toga ga prebacu u Currency. Cak je bolje da napravis funkciju koja pretvara podatak iz tabele u broj pa ga posle sredjuj kako hoces. Sto se tice Format naredbe imas konstantu koja se zove STANDARD tako da ne moras da brines ni o tome

neki_string = Format (nesto, STANDARD)
[ fragolan @ 29.02.2004. 00:18 ] @
Ovo sa Val sljaka. Hvala
Sto se tice fore sa Format i onog STANDARD, definitivno dobijam nezeljeni efekat. Umesto 0,5999999999999999998 dobijam 5999999999999999998.
Mozda ima efekat kada cita iz text box-a, ali sam u guzvi probacu nekom prilikom.
Jos jednom hvala za Val
[ BlueSoniq @ 01.03.2004. 09:49 ] @
Taj rezultat (5999.....) dobijas zato sto ti je u regionalnom setingu ukljucen engleski format za pisanje brojeva. Ako hoces da koristis decimalni zarez umesto uobicajene tacke po amerima to onda treba i da namestis u Control Panelu. Sasvim lepo bi ti to radilo da je broj 0.59999 .
[ Marko_L @ 01.03.2004. 10:59 ] @
Nema potrebe da menja Regional Settings, zato uostalom i postoji opcija Format kako ne bi svaki korisnik (end user) kome prodas (ili poklonis) program koji napravis morao da menja svoj Regional Settings samo da bi koristio tvoj program.Btw, ono sto si dobio sa opcijom Val mozes dobiti i na sledeci nacin:
Code:

Dim cena As Currency
cena = Format(gridPr.TextMatrix(gridPr.Row, 7) , "#.##")

A sam tip currency ce ti u reportu (stampi) staviti zarez kada odvaja decimale.
bar je kod mene tako radilo