/ 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
Afrunde
Fra : Thomas Christiansen


Dato : 05-03-01 16:13

Hvordan afrunder jeg et kommatal NED til nærmeste heltal


Thomas



 
 
Bjørn Jeberg (05-03-2001)
Kommentar
Fra : Bjørn Jeberg


Dato : 05-03-01 21:17

Thomas Christiansen <elmefaard@hotmail.com> wrote in message
news:980oje$2e79$1@news.cybercity.dk...
> Hvordan afrunder jeg et kommatal NED til nærmeste heltal
>

Int()

Bemærk at -1.1 bliver til -2, men det må vel også betegnes som værende ned.
--
Bjørn



Kim Pedersen [vbCode~ (06-03-2001)
Kommentar
Fra : Kim Pedersen [vbCode~


Dato : 06-03-01 23:45

Hej Thomas

> Hvordan afrunder jeg et kommatal NED til nærmeste heltal

Har du VB6 kan du bruge den nye kommando Round.

Hilsen/Best regards
Kim Pedersen, vbCode Magician Host
http://hjem.get2net.dk/vcoders/cm
ICQ: 62990889



Thomas Christiansen (07-03-2001)
Kommentar
Fra : Thomas Christiansen


Dato : 07-03-01 21:43

Hallo, den runder både op og ned!

"Kim Pedersen [vbCode Magician]" <codemagician@nospam.get2net.dk> skrev i en
meddelelse news:xLdp6.12857$XX2.260502@twister.sunsite.dk...
> Hej Thomas
>
> > Hvordan afrunder jeg et kommatal NED til nærmeste heltal
>
> Har du VB6 kan du bruge den nye kommando Round.
>
> Hilsen/Best regards
> Kim Pedersen, vbCode Magician Host
> http://hjem.get2net.dk/vcoders/cm
> ICQ: 62990889
>
>



Kim Pedersen [vbCode~ (07-03-2001)
Kommentar
Fra : Kim Pedersen [vbCode~


Dato : 07-03-01 22:24

Hej Thomas

> Hallo, den runder både op og ned!

Det er også rigtigt ja.. Det havde jeg glemt.. Hmm. Hvor mange decimaler
skal du bruge??

Hilsen/Best regards
Kim Pedersen, vbCode Magician Host
http://hjem.get2net.dk/vcoders/cm
ICQ: 62990889



Thomas Christiansen (07-03-2001)
Kommentar
Fra : Thomas Christiansen


Dato : 07-03-01 21:43

Hallo, den runder både op og ned! Det skal kun være NED!

"Kim Pedersen [vbCode Magician]" <codemagician@nospam.get2net.dk> skrev i en
meddelelse news:xLdp6.12857$XX2.260502@twister.sunsite.dk...
> Hej Thomas
>
> > Hvordan afrunder jeg et kommatal NED til nærmeste heltal
>
> Har du VB6 kan du bruge den nye kommando Round.
>
> Hilsen/Best regards
> Kim Pedersen, vbCode Magician Host
> http://hjem.get2net.dk/vcoders/cm
> ICQ: 62990889
>
>





Peter Knutsen (08-03-2001)
Kommentar
Fra : Peter Knutsen


Dato : 08-03-01 00:07



Thomas Christiansen wrote:
>
> Hallo, den runder både op og ned! Det skal kun være NED!

Så må du jo bare manipulere med tallet.

Prøv først at give den 4.49, så 4.5 og så 4.51.

Hvis den svarer 4, 5 og 5, så gør følgende

b = Round(a - 0.5)

Så er dit problem løst. Alle decimaler fjernes på korrekt vis.

--
Peter Knutsen

Tomas Christiansen (08-03-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 08-03-01 00:25

Peter Knutsen skrev:
> Prøv først at give den 4.49, så 4.5 og så 4.51.
> Hvis den svarer 4, 5 og 5...

Det gør Round IKKE.
Round(4.5) er lig 4 - og Round(3.5) iøvrigt også!

> b = Round(a - 0.5)

Hvorfor forsøge bruge en funktion, som har et andet formål end det ønskede,
i stedet for at bruge funktionen Int (som Bjørn Jeberg så udmærket
foreslog), som netop "runder ned" (man kalder dit vist nok at "afskære")???

Funktionerne Int og Fix gør det samme ikke-negative tal, men for negative
tal returnerer Int det nærmeste mindre heltal [Int(-2.7) = -3], mens Fix
returnerer det nærmeste større helttal [Fix(-2.7) = -2].

-------
Tomas



Thomas Christiansen (08-03-2001)
Kommentar
Fra : Thomas Christiansen


Dato : 08-03-01 16:16

Jeg har jo fået svar af Bjørn! Int() virker fint til det jeg skal bruge den
til, tak for svarende til alle!

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:Jqzp6.720$GU.13193@news.get2net.dk...
> Peter Knutsen skrev:
> > Prøv først at give den 4.49, så 4.5 og så 4.51.
> > Hvis den svarer 4, 5 og 5...
>
> Det gør Round IKKE.
> Round(4.5) er lig 4 - og Round(3.5) iøvrigt også!
>
> > b = Round(a - 0.5)
>
> Hvorfor forsøge bruge en funktion, som har et andet formål end det
ønskede,
> i stedet for at bruge funktionen Int (som Bjørn Jeberg så udmærket
> foreslog), som netop "runder ned" (man kalder dit vist nok at
"afskære")???
>
> Funktionerne Int og Fix gør det samme ikke-negative tal, men for negative
> tal returnerer Int det nærmeste mindre heltal [Int(-2.7) = -3], mens Fix
> returnerer det nærmeste større helttal [Fix(-2.7) = -2].
>
> -------
> Tomas
>
>



N/A (09-03-2001)
Kommentar
Fra : N/A


Dato : 09-03-01 23:24



Tomas Christiansen (09-03-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 09-03-01 23:24

Klaus Egebjerg skrev:
> Er der nogle er kan fortælle lidt bedre, hvordan man
> laver en normal 4/5 afrundning

Hvis du med "4/5 afrunding" mener, at du altid ønsker at runde op, hvis
værdien efter kommaet er 0,5 eller højere, og at du altid ønsker at runde
ned, hvis værdien efter kommaet er mindre end 0,5, så vil jeg anbefale tre
metoder:

1) Int(X + 0.5)
2) Fix(X + Sgn(X) * 0.5)
3) FormatNumber(X, 0)

Bemærkninger:
1) Virker kun korrekt for ikke-negative tal.
2) Virker både for negative og for ikke-negative tal.
3) Virker både for negative og for ikke-negative tal, men returnerer en
streng og IKKE et tal. Denne kan dog derefter konverteres tilbage til et
tal.

-------
Tomas



N/A (11-03-2001)
Kommentar
Fra : N/A


Dato : 11-03-01 21:52



Tomas Christiansen (11-03-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 11-03-01 21:52

Klaus Egebjerg skrev:
> Tak for dit svar, men hvor skal jeg skrive dette

Øbøøø... Der hvor du ønsker at afrunde... Hvor ellers?

Lad os tage et par eksempler:

Eksempel 1
* Den afrundede form af kommatallet i tekstboksen Text1, vises i tekstboksen
Text2.
* OBS: Der skal være et validt kommatal i Text1, ellers vil CLng-funktionen
fejle.

Text2.Text = FormatNumber(CLng(Text1.Text),0)


Eksempel 2
* En uendelig liste af "tilfældige" tal og deres afrundede form vises i
Immediate vinduet i VB udviklingsmiljøet, når programmet køres.
* OBS: Immediate vinduet kan vises ved at trykke Ctrl-G (og det er efter min
mening UUNDVÆRLIGT!)

Function Afrund(ByVal Kommatal As Double) As Double
Afrund = Fix(Kommatal + Sgn(Kommatal) * 0.5)
End Function

Private Sub Command1_Click()
Dim x As Double
Do
x = Rnd * 1000 - 500
Debug.Print "Tal="; x; Tab(40); "Afrundet="; Afrund(x)
Loop
End Sub


Håber det giver lidt inspiration, eller må du spørge lidt mere specifikt.

-------
Tomas



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

Månedens bedste
Årets bedste
Sidste års bedste