/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Prisudregning
Fra : Torsten Tolstrup Nie~


Dato : 02-02-01 17:08

Hej

Jeg er igang med at lave et fakturaprogram til eget brug, men jeg ved
ikke hvilken variabel jeg skal bruge for at kunne indtaste beløb med
decimaler, og så bruge operatorer som man ellers kan med integers...

MVH Torsten

p.s. Jeg vil sætte pris på hvis du vil svare på
torsten@nielsen.mail.dk, da jeg ikke kan se denne nyhedsgrupper
ordentligt...

 
 
Thomas P (02-02-2001)
Kommentar
Fra : Thomas P


Dato : 02-02-01 17:44

Currency, som også er en real (float)

--
- Thomas [blomme@post.com] [http://www.FlowCode.f2s.com]


Torsten Tolstrup Nielsen <torsten@nielsen.mail.dk> skrev i en
nyhedsmeddelelse:3a7adafd.5037660@news.inet.tele.dk...
> Hej
>
> Jeg er igang med at lave et fakturaprogram til eget brug, men jeg ved
> ikke hvilken variabel jeg skal bruge for at kunne indtaste beløb med
> decimaler, og så bruge operatorer som man ellers kan med integers...
>
> MVH Torsten
>
> p.s. Jeg vil sætte pris på hvis du vil svare på
> torsten@nielsen.mail.dk, da jeg ikke kan se denne nyhedsgrupper
> ordentligt...



Niels (niLLer) (02-02-2001)
Kommentar
Fra : Niels (niLLer)


Dato : 02-02-01 23:46

Just as I expected, torsten@nielsen.mail.dk (Torsten Tolstrup Nielsen)
came up with this:

>Jeg er igang med at lave et fakturaprogram til eget brug, men jeg ved
>ikke hvilken variabel jeg skal bruge for at kunne indtaste beløb med
>decimaler, og så bruge operatorer som man ellers kan med integers...

Du kan (som Thomas P også skrev) bruge Currency. Den bliver internt
gemt som en 64-bit integer, hvor de 4 sidste cifre er decimaler, men
når man regner med den bliver den opfattet som en Real type. Du kan
også bruge Extended typen (96 bit) som er en ægte floating-point type.
Men siden det nu er fakturaer som du skal lave, så er Currency nok den
der passer bedst!
Forresten så kan man jo bruge alle operatorer på alle taltyper (Int,
Real, Currency)!! Man skal bare huske at hvis man vil tildele en
Real-type værdi til en Integer-type variabel så skal man bruge Round()
eller Int() funktionen. Forskellen er at Round() afrunder til nærmeste
hele tal, Int() funktionen smider bare decimaler væk.

>p.s. Jeg vil sætte pris på hvis du vil svare på
>torsten@nielsen.mail.dk, da jeg ikke kan se denne nyhedsgrupper
>ordentligt...

Er gjort!

Niels (aka. niLLer)
--
e-mail: nmartin at iname dot com ICQ UIN: 50187323
http://www.niller.f2s.com/ - niLLer's pages (My programs, in English)
http://whitehat.dk/g4s/ - The G4S Page (Personlig side, på dansk)
-- No longer Windozed!

Thomas Due (06-02-2001)
Kommentar
Fra : Thomas Due


Dato : 06-02-01 08:31

[SNIP]

> Forresten så kan man jo bruge alle operatorer på alle taltyper (Int,
> Real, Currency)!! Man skal bare huske at hvis man vil tildele en
> Real-type værdi til en Integer-type variabel så skal man bruge Round()
> eller Int() funktionen. Forskellen er at Round() afrunder til nærmeste
> hele tal, Int() funktionen smider bare decimaler væk.
>
Man skal så lige være opmærksom på at Round() ikke afrunder matematisk
korrekt.

Citat fra hjælpen :

"Round returns an Int64 value that is the value of X rounded to the
nearest whole number. If X is exactly halfway between two whole
numbers, the result is always the even number."

Så med andre ord, check for om din decimal er _præcis_ .5, for i
så fald kan round godt finde på at afrunde forkert.

Eksempel : 4.5 afrundes til 4 og ikke 5, som ville være korrekt.

(Decimalen kan checkes med frac() )

Mvh
Thomas



Stig Johansen (07-02-2001)
Kommentar
Fra : Stig Johansen


Dato : 07-02-01 04:57

Hej.


"Thomas Due" <noname@nowhere.net> wrote in message
news:95o98l$1al$1@news.inet.tele.dk...
> [SNIP]
>
> > Forresten så kan man jo bruge alle operatorer på alle taltyper (Int,
> > Real, Currency)!! Man skal bare huske at hvis man vil tildele en
> > Real-type værdi til en Integer-type variabel så skal man bruge Round()
> > eller Int() funktionen. Forskellen er at Round() afrunder til nærmeste
> > hele tal, Int() funktionen smider bare decimaler væk.
> >
> Man skal så lige være opmærksom på at Round() ikke afrunder matematisk
> korrekt.
>
> Citat fra hjælpen :
>
> "Round returns an Int64 value that is the value of X rounded to the
> nearest whole number. If X is exactly halfway between two whole
> numbers, the result is always the even number."
>
> Så med andre ord, check for om din decimal er _præcis_ .5, for i
> så fald kan round godt finde på at afrunde forkert.
>
> Eksempel : 4.5 afrundes til 4 og ikke 5, som ville være korrekt.
>

Men så vidt jeg husker, er det regnskabsmæssigt korrekt.

--
Med venlig hilsen/Best Regards
Stig Johansen - stig@w3data.dk
W3 Data - mailto@w3data.dk





Thomas Due (07-02-2001)
Kommentar
Fra : Thomas Due


Dato : 07-02-01 08:16

[SNIP]
> >
> > Så med andre ord, check for om din decimal er _præcis_ .5, for i
> > så fald kan round godt finde på at afrunde forkert.
> >
> > Eksempel : 4.5 afrundes til 4 og ikke 5, som ville være korrekt.
>
> Men så vidt jeg husker, er det regnskabsmæssigt korrekt.

Det er sgu da en tåbelig regel, men det er selvfølgelig ikke din skyld ;)

Mvh
Thomas



Stig Johansen (08-02-2001)
Kommentar
Fra : Stig Johansen


Dato : 08-02-01 23:04

Hej.


"Thomas Due" <noname@nowhere.net> wrote in message
news:95qson$g9i$1@news.inet.tele.dk...
> [SNIP]
> > >
> > > Så med andre ord, check for om din decimal er _præcis_ .5, for i
> > > så fald kan round godt finde på at afrunde forkert.
> > >
> > > Eksempel : 4.5 afrundes til 4 og ikke 5, som ville være korrekt.
> >
> > Men så vidt jeg husker, er det regnskabsmæssigt korrekt.
>
> Det er sgu da en tåbelig regel, men det er selvfølgelig ikke din skyld ;)
>

Nææh, så tåbelig er den nu heller ikke. Hvis vi tager dit eksempel, hvor det
præcist lander på .5, så er det jo præcist midt imellem, og det er lige
rigtigt og forkert, at runde op og ned.

Ved at lave det på den angivne måde, rundes haldelen af tilfælde op, og den
anden halvdel ned.

--
Med venlig hilsen/Best Regards
Stig Johansen - stig@w3data.dk
W3 Data - mailto@w3data.dk





Ulrik Vadstrup (07-02-2001)
Kommentar
Fra : Ulrik Vadstrup


Dato : 07-02-01 10:29

> > Så med andre ord, check for om din decimal er _præcis_ .5, for i
> > så fald kan round godt finde på at afrunde forkert.
> >
> > Eksempel : 4.5 afrundes til 4 og ikke 5, som ville være korrekt.
> >

Du kan vel bare ligge 0.5 til dit resultat før du afrunder ?


>
> Men så vidt jeg husker, er det regnskabsmæssigt korrekt.
>
> --
> Med venlig hilsen/Best Regards
> Stig Johansen - stig@w3data.dk
> W3 Data - mailto@w3data.dk
>
---

Ulrik



Stig Johansen (03-02-2001)
Kommentar
Fra : Stig Johansen


Dato : 03-02-01 14:03


"Torsten Tolstrup Nielsen" <torsten@nielsen.mail.dk> wrote in message
news:3a7adafd.5037660@news.inet.tele.dk...
> Hej
>
> Jeg er igang med at lave et fakturaprogram til eget brug, men jeg ved
> ikke hvilken variabel jeg skal bruge for at kunne indtaste beløb med
> decimaler, og så bruge operatorer som man ellers kan med integers...
>
Lige et par gode råd (Til jer alle).
Never ever bruge floating point variable i administrative systemer.
Husk altid at benytte mellemresultat til momsudregning (o.lign)
1:beløb
2:moms=beløb*moms%
3:total=beløb*(1+moms%)
DENNE METODE BØR IKKE BRUGES, BRUG:
3:total=beløb+moms

--
Med venlig hilsen/Best Regards
Stig Johansen - stig@w3data.dk
W3 Data - mailto@w3data.dk





Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste