/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408927
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste