|
| Afrunding af tal Fra : Sv-e Madsen |
Dato : 26-12-01 20:36 |
|
Hej
Jeg er helt ny i vb program. Jeg roder lidt med en ver 4, jeg har lavet et
program som udregner nogle tal:
netto = nettotxt.Text
saldo = saldotxt.Text
moms = momstxt.Text
If netto = "" And saldo = "" Then
GoTo 10
End If
saldo = (netto * (1.25))
moms = (saldo * (0.2))
nettotxt.Text = netto
saldotxt.Text = saldo
momstxt.Text = moms
10
Har problemer med at formatere min udskrift så den runder ørebeløbet op og
viser præcist 2 decimaler. Håber på hjælp.
vh
Sv-E
--
Posted from [212.10.245.199]
via Mailgate.ORG Server - http://www.Mailgate.ORG
| |
Jens (27-12-2001)
| Kommentar Fra : Jens |
Dato : 27-12-01 07:22 |
|
Det her er sådan en man gemmer !
Int(FormatNumber((dTest / 0.25), 0)) * 0.25
| |
Vestergaard (27-12-2001)
| Kommentar Fra : Vestergaard |
Dato : 27-12-01 16:07 |
|
Halløj
Man kan bruge Round funktionen.
Eksempel:
netto = Round(nettotxt, 2)
Det afrunder netto til et tal med to decimaler.
Forøvrigt, hvis du siger du er nybegynder vil jeg lige give et par "tips".
- Man bruger ikke GoTo, kun i errortrapping. I dette tilfælde kunne du bruge
Exit Sub i stedet, eller skrive:
If netto <> "" And saldo <> "" Then
'Gør alt det med beregning af moms
End If
.... det er bedre i nogle tilfælde.
Håber det hjalp
Jacob S. V.
---------------------------------------
> netto = nettotxt.Text
> saldo = saldotxt.Text
> moms = momstxt.Text
>
> If netto = "" And saldo = "" Then
> GoTo 10
> End If
>
> saldo = (netto * (1.25))
> moms = (saldo * (0.2))
>
> nettotxt.Text = netto
> saldotxt.Text = saldo
> momstxt.Text = moms
> 10
>
> Har problemer med at formatere min udskrift så den runder ørebeløbet op og
> viser præcist 2 decimaler. Håber på hjælp.
| |
Tomas Christiansen (28-12-2001)
| Kommentar Fra : Tomas Christiansen |
Dato : 28-12-01 00:27 |
|
Vestergaard skrev:
> netto = Round(nettotxt, 2)
>
> Det afrunder netto til et tal med to decimaler.
Man bør nok også samtidig gøre opmærksom på, at VB's Round-funktion
giver et resultat, som i langt de fleste tilfælde ikke er brugbart
(jeg har endnu ikke set et sted hvor den var anvendelig...)
Tag som eksempel resultatet af følgende to afrundinger:
Round(1.015, 2) = 1,01
Round(2.015, 2) = 2,02
Man skulle umidelbart tro at afrundingen skulle give samme resultat,
uanset om heltalsdelen har værdien 1 eller 2 ... men nej!
Prøv også med Round(2.5)
-------
Tomas
| |
Harald Staff (28-12-2001)
| Kommentar Fra : Harald Staff |
Dato : 28-12-01 14:19 |
|
Au contraire, my friend. Round anvender, ligesom Clng noe som heter
"Banker's rounding".
Avrunding skjer ved at >0.5 skal rundes op, mens <0.5 skal rundes ned. Men
hva med eksakt 0.5 ? I finansverdenen skjer da følgende, enkelt illustreret:
Om 0.5 altid rundes op, vil dette etterhvert utgjøre penge som tilfaller
bankene (=tyveri), rundes det ned, tilfaller pengene kundene (=tab).
Løsningen er "Banker's rounding", halvdelen av tilfellene rundes op,
halvdelen ned. Dette gjøres ved å konsekvent avrunde til nærmeste partal.
Systemet er genialt. Men man skal være klar over det. I tilfeller økonomi er
det definitivt altid brugbart. I tilfeller "udregne størrelsen på materialer
til maskinproduktion" kan resultatet være katastrofalt.
HTH. Beste hilsen Harald
Tomas Christiansen <toc@blikroer.removethis.dk> skrev i
news:a0gamn$tib$1@news.cybercity.dk...
> Vestergaard skrev:
> > netto = Round(nettotxt, 2)
> >
> > Det afrunder netto til et tal med to decimaler.
>
> Man bør nok også samtidig gøre opmærksom på, at VB's Round-funktion
> giver et resultat, som i langt de fleste tilfælde ikke er brugbart
> (jeg har endnu ikke set et sted hvor den var anvendelig...)
>
> Tag som eksempel resultatet af følgende to afrundinger:
>
> Round(1.015, 2) = 1,01
> Round(2.015, 2) = 2,02
>
> Man skulle umidelbart tro at afrundingen skulle give samme resultat,
> uanset om heltalsdelen har værdien 1 eller 2 ... men nej!
>
> Prøv også med Round(2.5)
>
> -------
> Tomas
>
| |
Tomas Christiansen (28-12-2001)
| Kommentar Fra : Tomas Christiansen |
Dato : 28-12-01 22:38 |
|
Harald Staff skrev:
> Au contraire, my friend. Round anvender, ligesom Clng noe som heter
> "Banker's rounding".
Det er jeg fuldstændig klar over, men når jeg vil fastholde, at
resultatet af afrundingen ikke er brugbart, er det fordi at den
almindelige, anerkendte og mest udbredte form for afrunding er at <x.5
rundes ned og >=x.5 rundes op.
Dokumenationen til Round nævner blot intet om, at der benyttes en
anden metode til afrunding (omend den er nok så mange gange bedre og
mere genial), og derfor er resultatet ikke brugbart!
Forstår du min holdning: Alt (næsten) er tilladt, når blot det er
dokumenteret - men så SKAL det også dokumenteres!
Iøvrigt bruges afrundingsmetoden også i CInt - dvs. formentlig helt
generelt i VB, når der afrundes "skjult" for brugeren (det kan være
meget svært at gennemskue præcis hvad der sker, når der ikke benyttes
eksplicitte type-konverteringer).
-------
Tomas
| |
|
|