XP1800/doet het niet :(
1
| variable = Abs(Int(-waarde)) |
typ voor de grap ook eens "ASP Rnd" in bij de zoekmachine
En met de Rnd functie precies hetzelfde. Ik dacht dat ik ergens in een boek gelezen had dat er een kleine functie voor in vb gebouwd zat. maar dat kan ik nu niet meer terugvinden
XP1800/doet het niet :(
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
edit: is het niet mogelijk elk NIET heel getal + 1 te doen en dan de decimalen eraf te halen?
[ Voor 63% gewijzigd door Mischa_NL op 02-08-2004 19:36 ]
of was dat alleen met .net
Kijk daar moet je ook maar opkomenPaul Nieuwkamp schreef op 02 augustus 2004 @ 19:32:
1/2 erbij optellen en het integer-deel nemen?
Jeetje, binnen een minuut opgelost, dat gaat snel. Bedankt!
XP1800/doet het niet :(
Fix(waarde)+1
[ Voor 3% gewijzigd door Maasluip op 02-08-2004 19:36 ]
Signatures zijn voor boomers.
Jij wilt dus blijkbaar ALTIJD het integer-deel + 1? Integerdeel nemen en 1 erbij optellen
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
1
2
| a: -sgn(x)*int(-sgn(x)*x) b: -sgn(x)*int(-x) |
a rondt 4,1 af op 5; -4,1 op -5
b rondt 4,1 af op 5; -4,1 op -4
[ Voor 34% gewijzigd door Lustucru op 02-08-2004 21:38 ]
De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland
zoiets dus:
if int(getal) != getal then
result = int(getal) +1
else
result = getal
[ Voor 29% gewijzigd door Mayco op 02-08-2004 21:37 ]
1
2
3
4
5
| if(integer(x) == x){
x = x ;
else{
x = integer(x) + 1;
} |
Maar er is vast wel een functie die dit voor je doet. (ik kan nauwelijks vb dus het is pseudo-code, maar het gaat om het idee)
[ Voor 19% gewijzigd door Rac-On op 02-08-2004 21:38 ]
doet niet aan icons, usertitels of signatures
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| '-----------------------------------------------------
'Author: Dr. John A. Nyhart
'work : john_nyhart@medicalogic.com
'home : jnyhart@spessart.com
'web : www.spessart.com/users/jnyhart/john1.htm
'Posted:7/22/97
'
'Here is a function to round a value up,down,or near
'to another value.
'-----------------------------------------------------
Function doRound(value As Double, RStep As Double, Mode As String) As
Double
' ***********************
' Mode function
' UP RoundUp
' DN RoundDN
' NE Nearest
'
' ***********************
If Mode = "DN" Then
doRound = (Int(value / RStep) * RStep)
Exit Function
End If
' **** mode up
If Mode = "UP" Then
If value Mod RStep > 0 Then
doRound = ((Int(value / RStep) * RStep) + RStep)
Else
doRound = value
End If
Exit Function
End If
If Mode = "NE" Then
value = value + (RStep / 2)
doRound = (Int(value / RStep) * RStep)
Exit Function
End If
End Function |
Zeker niet ideaal, maar een speciale functie schijnt er niet voor te zijn in visual basic 6. Als je heel vaak alleen naar boven moet afronden, dan zou ik er een speciale functie voor maken die alleen dat doet.
Heb het alvast voor je gedaan:
1
2
3
4
5
6
7
| Function RoundUp(ByVal val As Double)
If Int(val) = val Then
RoundUp = val
Else
RoundUp = Int(val) + 1
End If
End Function |
[ Voor 20% gewijzigd door -DarkShadow- op 02-08-2004 21:54 ]
Specialist in:
Soldeerstations
Oscilloscoop
Ik weet alleen niet wat duurder is, 0.9(999) ergens bij optellen of die if-jes die hierboven staan
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
Simpel en effectief, mijn dank is groot-DarkShadow- schreef op 02 augustus 2004 @ 21:50:
Zeker niet ideaal, maar een speciale functie schijnt er niet voor te zijn in visual basic 6. Als je heel vaak alleen naar boven moet afronden, dan zou ik er een speciale functie voor maken die alleen dat doet.
Heb het alvast voor je gedaan:code:
1 2 3 4 5 6 7Function RoundUp(ByVal val As Double) If Int(val) = val Then RoundUp = val Else RoundUp = Int(val) + 1 End If End Function
Dat 0.5 erbij optellen bleek namelijk ook voor geen meter te werken
XP1800/doet het niet :(
Afhankelijk van je definitie van afrondenphroze schreef op 03 augustus 2004 @ 18:32:
Dat 0.5 erbij optellen bleek namelijk ook voor geen meter te werken
"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock
1
2
| Function RoundUp(ByVal val As Double)
If Int(val) = val Then |
Ik heb ooit geleerd dat deze vergelijking 'if integer=real then' gevaarlijk kan zijn en in bepaalde gevallen foutieve antwoorden kan geven. De implementatie die erboven staat is robuuster door het gebruik van de mod funktie. Je zou dat overigens vrij eenvoudig kunnen testen door als input een waardes te geven als bv. 4-10-12, 4, 4+10-12.
Okee dat was destijds wel in een mierenn* setting van wiskundigen die er altijd iets van maakten als
1
| if a-b<epsilon then |
[ Voor 30% gewijzigd door Henk007 op 03-08-2004 19:57 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
| ' Functie Floor ' Omschr. Rond een gebroken getal af naar onderen ' Floor( 1.6) = 1 ' Floor(-1.6) = -2 Public Function Floor(ByVal x As Double) As Long Floor = Sgn(x) * Abs(Int(x)) End Function ' Functie Ceil ' Omschr Rond af naar boven Public Function Ceil(ByVal x As Double) As Long Ceil = Sgn(x) * Abs(Int(-x)) End Function |
Ceil rond dus af naar +oneindig en Floor rond dus af naar -oneindig.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
2
3
4
5
6
7
| Public Function Floor(ByVal x As Currency, Optional lDecimals As Long = 0) As Currency
Floor = Int(x * (10 ^ lDecimals)) / 10 ^ lDecimals
End Function
Public Function Ceil(ByVal x As Currency, Optional lDecimals As Long = 0) As Currency
Ceil = -Int(-x * (10 ^ lDecimals)) / 10 ^ lDecimals
End Function |
Overigens wel redelijk "gevaarlijk" als je met erg grote getallen werkt
Disclaimer: Uit de losse pols, niet gechecked ...
[ Voor 17% gewijzigd door RobIII op 25-01-2005 12:42 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
1
| iVal = -Int(-dblVal) |
En sign proof (bv -2.1 en 2.1):
1
| iVal = IIf(dblVal < 0, Int(dblVal), -Int(-dblVal)) |
[ Voor 62% gewijzigd door angelina op 25-01-2005 15:20 ]