/ 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
Runde ned?
Fra : diztort


Dato : 04-05-02 12:00

Hvordan får jeg vb til at runde ned?

(ex)
x / y * 17

jeg kan få den til at runde af til nærmeste hele tal

x \ y * 17

men hvordan får jeg den til altid at runde ned?


nOAz



 
 
Carsten Jessen (04-05-2002)
Kommentar
Fra : Carsten Jessen


Dato : 04-05-02 12:27

Hej
Brug "Int"
MVH Carsten


"diztort" <diztort@hotmail.com> wrote in message
news:ab0ev4$e5ahc$1@ID-134837.news.dfncis.de...
> Hvordan får jeg vb til at runde ned?
>
> (ex)
> x / y * 17
>
> jeg kan få den til at runde af til nærmeste hele tal
>
> x \ y * 17
>
> men hvordan får jeg den til altid at runde ned?
>
>
> nOAz
>
>
>



nOAz (04-05-2002)
Kommentar
Fra : nOAz


Dato : 04-05-02 12:53

som "Dim X As Integer" men den runder stadig til nærmeste hele... hvad er
det jeg skal tilføje for at den runder ned?


"Carsten Jessen" <c.je@get2net.dkREMOVETHIS> wrote in message
news:lAPA8.790$RE4.709707978@news.orangenet.dk...
> Hej
> Brug "Int"
> MVH Carsten
>
>
> "diztort" <diztort@hotmail.com> wrote in message
> news:ab0ev4$e5ahc$1@ID-134837.news.dfncis.de...
> > Hvordan får jeg vb til at runde ned?
> >
> > (ex)
> > x / y * 17
> >
> > jeg kan få den til at runde af til nærmeste hele tal
> >
> > x \ y * 17
> >
> > men hvordan får jeg den til altid at runde ned?
> >
> >
> > nOAz
> >
> >
> >
>
>



Erlend Klakegg Bergh~ (04-05-2002)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 04-05-02 13:49

"nOAz" <nOAz@hotmail.com> skrev i melding
news:ab0i2n$ed8dq$1@ID-134837.news.dfncis.de...
> som "Dim X As Integer" men den runder stadig til nærmeste hele... hvad er
> det jeg skal tilføje for at den runder ned?

Tall = 193.272
If Int(Tall) > Tall Then NyttTall = Int(Tall) - 1 Else NyttTall = Int(Tall)

Hvorfor tenke vanskelig ?

--

Vennlig hilsen Erlend

erlendkb@online.no - ICQ: 42053660
http://www.kleggen.com/ - http://www.pizza.no/



Harald Staff (04-05-2002)
Kommentar
Fra : Harald Staff


Dato : 04-05-02 13:53


Int(x / y * 17)

HTH. beste hilsen Harald

"nOAz" <nOAz@hotmail.com> skrev i melding
news:ab0i2n$ed8dq$1@ID-134837.news.dfncis.de...
> som "Dim X As Integer" men den runder stadig til nærmeste hele... hvad er
> det jeg skal tilføje for at den runder ned?
>
>
> "Carsten Jessen" <c.je@get2net.dkREMOVETHIS> wrote in message
> news:lAPA8.790$RE4.709707978@news.orangenet.dk...
> > Hej
> > Brug "Int"
> > MVH Carsten
> >
> >
> > "diztort" <diztort@hotmail.com> wrote in message
> > news:ab0ev4$e5ahc$1@ID-134837.news.dfncis.de...
> > > Hvordan får jeg vb til at runde ned?
> > >
> > > (ex)
> > > x / y * 17
> > >
> > > jeg kan få den til at runde af til nærmeste hele tal
> > >
> > > x \ y * 17
> > >
> > > men hvordan får jeg den til altid at runde ned?
> > >
> > >
> > > nOAz
> > >
> > >
> > >
> >
> >
>
>



Jens Vestergaard (04-05-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 04-05-02 15:27

"Harald Staff" <harald.staff@nrk.no> skrev i en meddelelse
news:ab0ljj$gr7$1@oslo-nntp.eunet.no...
>
> Int(x / y * 17)

Men pas lidt på med Integer - hvis resultatet, **eller en mellemregning**,
bliver højere end en integer, får du en runtime error.


--
mvh
Jens Vestergaard
www.railsoft.dk



diztort (04-05-2002)
Kommentar
Fra : diztort


Dato : 04-05-02 17:44

hvor højt må en integer da være ??

> >
> > Int(x / y * 17)
>
> Men pas lidt på med Integer - hvis resultatet, **eller en mellemregning**,
> bliver højere end en integer, får du en runtime error.
>
>
> --
> mvh
> Jens Vestergaard
> www.railsoft.dk
>
>



Jens Vestergaard (04-05-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 04-05-02 19:26

"diztort" <diztort@hotmail.com> skrev i en meddelelse
news:ab134m$e7jrv$1@ID-134837.news.dfncis.de...
> hvor højt må en integer da være ??
>

-32.768 til 32.767

--
mvh
Jens Vestergaard
www.railsoft.dk



diztort (04-05-2002)
Kommentar
Fra : diztort


Dato : 04-05-02 21:06

ok....



Rayman (05-05-2002)
Kommentar
Fra : Rayman


Dato : 05-05-02 17:34

prøv:

Fix(9/10)

Mvh. Rayman

"diztort" <diztort@hotmail.com> wrote in message
news:ab1evm$em71p$1@ID-134837.news.dfncis.de...
> ok....
>
>



Tomas Christiansen (05-05-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 05-05-02 22:37

Jens Vestergaard skrev:
> > Int(x / y * 17)
>
> Men pas lidt på med Integer - hvis resultatet, **eller en
mellemregning**,
> bliver højere end en integer, får du en runtime error.

Kun hvis *alle* tal og *alle* variabler som indgår i udtrykket alle
sammen er af typen integer (... og at ingen ikke-integer typer ikke
bliver eksplicit konverteret til integer med CInt-funktionen)!

I eksemplet ovenfor er det nok at x og/eller y ikke er af typen
integer - så vil det gå godt.
Man kan dog også selv klare det med en eksplicit konvertering til
noget andet end integer, feks:

Int(CLng(10) * 30000 / 100)

Her skal også lige nævnes at hvis 30000 forhøjes til 300000, som jo
medfører at tallet ikke længere betragtes som en integer, men som en
long, vil også gøre at VB ikke vil klage over overløbsfejl:

Int(10 * 300000 / 100)

-------
Tomas


Harald Staff (05-05-2002)
Kommentar
Fra : Harald Staff


Dato : 05-05-02 23:04

"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:ab48lj$1qtl$1@news.cybercity.dk...
> > Men pas lidt på med Integer - hvis resultatet, **eller en
> mellemregning**,
> > bliver højere end en integer, får du en runtime error.
>
> Kun hvis *alle* tal og *alle* variabler som indgår i udtrykket alle
> sammen er af typen integer (... og at ingen ikke-integer typer ikke
> bliver eksplicit konverteret til integer med CInt-funktionen)!

Nå ja jo. Det er lenger mellom teori og praksis i praksis end i teori. Prøv
f.eks denne:

Sub test()
Dim L As Long
Dim i As Integer

For i = 1 To 50
L = i * 20000
Next

End Sub

Beste hilsen Harald



Tomas Christiansen (06-05-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 06-05-02 21:08

Harald Staff skrev:
> Nå ja jo. Det er lenger mellom teori og praksis i praksis end i
teori.

Eller: frem og tilbage er lige langt!

> Dim i As Integer
>
> For i = 1 To 50
> L = i * 20000
> Next

Uden at have afprøvet kodestumpen, vil jeg formode at kodestumpen går
ned når i=2, idet *alle* variabler og *alle* tal, som indgår i
udtrykket, er af typen integer. Helt konsistent med hvad jeg tidligere
skrev.

Måske du tager fejl af tildelingstegnet "=", som jo til forveksling
ligner sammenligningsoperatoren "=", men som ikke har noget til fælles
med denne (hvorfor man i andre sprog bruger f.eks. ":=" som
tildelingstegn, eller benytter andre krumspring, for at sikre at ingen
tager fejl af de to).

Med andre ord indeholder linien "L = i * 20000" én variabel på venstre
side af tildelingstegnet og ét udtryk (bestående af én variabel, en
gange-operator og én tal-konstant) på højre side af tildelingstegnet.

-------
Tomas


Harald Staff (07-05-2002)
Kommentar
Fra : Harald Staff


Dato : 07-05-02 13:16


"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i melding
news:ab6nrc$17lg$1@news.cybercity.dk...

> Uden at have afprøvet kodestumpen, vil jeg formode at kodestumpen går
> ned når i=2, idet *alle* variabler og *alle* tal, som indgår i
> udtrykket, er af typen integer. Helt konsistent med hvad jeg tidligere
> skrev.
>
> Måske du tager fejl af tildelingstegnet "=", som jo til forveksling
> ligner sammenligningsoperatoren "=", men som ikke har noget til fælles
> med denne (hvorfor man i andre sprog bruger f.eks. ":=" som
> tildelingstegn, eller benytter andre krumspring, for at sikre at ingen
> tager fejl af de to).
>
> Med andre ord indeholder linien "L = i * 20000" én variabel på venstre
> side af tildelingstegnet og ét udtryk (bestående af én variabel, en
> gange-operator og én tal-konstant) på højre side af tildelingstegnet.

??? Kan du forklare meg hvor og hvorfor L bliver integer når det er
deklareret Long ?

Beste hilsen Harald



Tomas Christiansen (07-05-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 07-05-02 21:46

Harald Staff skrev:
> ??? Kan du forklare meg hvor og hvorfor L bliver integer når det er
> deklareret Long ?

Kan du forklare mig hvornår skulle have påstået dette?

Jeg er i og for sig ligeglad med L'et idet det står venstre side af et
tildelingstegn.
Dermed indgår L'et ikke i udtrykket på højre side af tildelingstegnet,
og det er talkonstanter og variabler i dette udtryk, som er
interessante mht. overløbsproblemet.

VB's compiler er ikke så "smart" at den kigger på typen af variablen
på venstre side af tildelingstegnet, og derefter benytter denne
information til implicit at foretage en konvertering af udtrykket
(eller de elementer som indgår i udtrykket) på højre side af
tildelingstegnet.

Nej, så hellere *forsøge* at regne sig frem til et resultat (med den
risiko der er for overløb undervejs), som til sidst skal konverteres
til noget brugbart, inden resultatet kan puttes ind i variablen L.

Humlen består i at forstå hvornår VB konverterer hvad til hvad.
Nogle gange kan rækkefølgen, metoden og formålet med disse implicitte
konverteringer dog ikke forklares på fornuftig vis, og man må blot med
undren se på et resultat, som kan ligge meget langt fra hvad
forventede (og som ingen kan forklare præcis hvordan VB kom frem til
dette resultat).

-------
Tomas


Harald Staff (07-05-2002)
Kommentar
Fra : Harald Staff


Dato : 07-05-02 22:06


"Tomas Christiansen" <toc@blikroer.removethis.dk> wrote in message
news:ab9ee7$13gq$1@news.cybercity.dk...
> Harald Staff skrev:
> > ??? Kan du forklare meg hvor og hvorfor L bliver integer når det er
> > deklareret Long ?
>
> Kan du forklare mig hvornår skulle have påstået dette?

Her: "idet *alle* variabler og *alle* tal, som indgår i udtrykket, er af
typen integer. "

Resten er fremdeles ubegripelig -ligesom feilen. Så du har ret fordi VB er
"konsistent med hvad du skriver". Forveksle ikke dette med "logisk".

Beste hilsen Harald



Tomas Christiansen (07-05-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 07-05-02 22:13

Harald Staff skrev:
> > Kan du forklare mig hvornår skulle have påstået dette?
>
> Her: "idet *alle* variabler og *alle* tal, som indgår i udtrykket,
er af
> typen integer. "

Okay, jeg tager den én gang til og så aldrig mere.

Dette:

L = i * 20000

er, hvis det står alene, *ikke* et udtryk. Det er et "statement" (jeg
kan ikke lige huske hvad man kalder "statement" på dansk).

Det består af en variabel (L), et tildelingstegn (=) OG et UDTRYK.

Forstår du nu hvad jeg mener med "... *alle* ... som indgår i
UDTRYKKET ..."?

L'et og ='et indgår IKKE i et udtryk men i et "statement".

-------
Tomas


Harald Staff (08-05-2002)
Kommentar
Fra : Harald Staff


Dato : 08-05-02 08:17


"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i melding
news:ab9g14$15qq$1@news.cybercity.dk...

> Okay, jeg tager den én gang til og så aldrig mere.

OK, got it. Tak for tålmodig forklaring.

Beste hilsen Harald



Stefan McKinnon Edwa~ (09-05-2002)
Kommentar
Fra : Stefan McKinnon Edwa~


Dato : 09-05-02 16:53

Du kan runde af, ved at bruge Round (står under VBA!)

Function Round(Number, [NumDigitsAfterDecimal As Long])

Sværer er det ikke!
Hvis du skal runde ned til heltal, brug af Int, men den kan lave en fejl.

- Stefan

"Carsten Jessen" <c.je@get2net.dkREMOVETHIS> wrote in message
news:lAPA8.790$RE4.709707978@news.orangenet.dk...
Hej
Brug "Int"
MVH Carsten


"diztort" <diztort@hotmail.com> wrote in message
news:ab0ev4$e5ahc$1@ID-134837.news.dfncis.de...
> Hvordan får jeg vb til at runde ned?
>
> (ex)
> x / y * 17
>
> jeg kan få den til at runde af til nærmeste hele tal
>
> x \ y * 17
>
> men hvordan får jeg den til altid at runde ned?
>
>
> nOAz
>
>
>





nOAz (04-05-2002)
Kommentar
Fra : nOAz


Dato : 04-05-02 18:30

jeg forstår... mange tak!


nOAz


"diztort" <diztort@hotmail.com> wrote in message
news:ab0ev4$e5ahc$1@ID-134837.news.dfncis.de...
> Hvordan får jeg vb til at runde ned?
>
> (ex)
> x / y * 17
>
> jeg kan få den til at runde af til nærmeste hele tal
>
> x \ y * 17
>
> men hvordan får jeg den til altid at runde ned?
>
>
> nOAz
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste