30. december 2003 - 18:27
Der er
19 kommentarer og 3 løsninger
Runde op
Hej Er der nogen der kender en runde op funktion i php? Altså 187 rundes op til 200 1500000 runder op til 2000000 5 rundes op til 10 1768 rundes op til 2000 osv osv Den må bare - ikke - runde ned! //
Annonceindlæg fra Cognizant
30. december 2003 - 18:35
#1
Formelen må være: scale = pow(10, intfloor(log10(x))) y = intceil(x/scale) * scale nu skal du bare have en til at oversætte det til PHP !
30. december 2003 - 18:35
#2
ceil($tal)
30. december 2003 - 18:36
#3
30. december 2003 - 18:38
#4
fcknet> Jeg er ret sikker på at ceil(187) returnerer 187 ikke 200 !
30. december 2003 - 18:56
#5
arne_v ->> Tak, vil du ikke prøve at lave et eksempel, hvor tallet er 187 ?
30. december 2003 - 18:56
#6
fcknet -> ceil udskriver bare det samme tal.. :-(
30. december 2003 - 18:59
#7
Desværre programmerer jeg ikke i PHP. jeg er overbevist om at min formel er rigtig. log10(187) er 2.27 intfloor(22.27) er 2 pow(10,2) er 100 187/100 er 1.87 intceil(1.87) er 2 2*100 er 200
30. december 2003 - 18:59
#8
En oversættelse til php (if-sætningen er på da den ellers ikke virker med tal under 10.) <?php $x = 10; if($x < 10) { $scale = pow(10, floor(log10($x))) * 10; } else { $scale = pow(10, floor(log10($x))); } $y = ceil($x/$scale) * $scale; echo $y; ?>
30. december 2003 - 18:59
#9
arne -> må være $tal = 187; $scale = pow(10, floor(log($tal, 10))); $rundet = ceil($tal/$scale) * $scale; echo $rundet; tror jeg... Morten
30. december 2003 - 19:00
#10
ok jeg prøver mig frem ;)
30. december 2003 - 19:02
#11
Morten -> det skal være log10 og ikke log
30. december 2003 - 19:02
#12
ahv> Hvorfor skulle det ikke virke for <10 ?
30. december 2003 - 19:05
#13
Tak Arne, løsningen blev sådan: <?php $x = 187; $scale = pow(10, floor(log10($x))); $y = ceil($x/$scale) * $scale; echo $y; ?> og tak til jer andre, jeg prøver lige ahv's script, og hvis det virker deler jeg mellem arne v og ahv. Er det okay ?
30. december 2003 - 19:08
#14
ahv -> havde ikke se funktionen log10(), derfor jeg benyttede log($tal, 10) (tjek php.net/log, det andet parameter er base for logaritmen... tilføjet i 4.3.0) Morten
30. december 2003 - 19:11
#15
Arne_v eks -> log10(5) er 0.698970004336 intfloor(0.698970004336) er 0 pow(10,0) er 1 5/1 er 5 intceil(5) er 5 5 * 1 er 5
30. december 2003 - 19:11
#16
okay, alle virker faktisk, så smid et svar, dea_pg, og arne_v.
30. december 2003 - 19:13
#17
exp5 -> Dog virker virker de andres ikke for <10
30. december 2003 - 19:15
#18
svaa'r Morten
30. december 2003 - 19:16
#19
ok, vi mangler stadig arne_v's svar ;)
30. december 2003 - 19:16
#20
Aha. Jeg antog at 5 skulle blive til 5. Fordi 5 oprundet til et ciffer er 5. Men du har ret at der står at 5 skal oprunde til 10.
30. december 2003 - 19:16
#21
svar
30. december 2003 - 19:20
#22
Tak for svarene! Håber det er en fair point fordeling
Vi tilbyder markedets bedste kurser inden for webudvikling