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