|
| 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
| |
|
|