Oprettet tir. d. 30. december 2003 kl. 18:27:04

exp5
exp5 (14.850 point. Point ude: 0)

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!

//

Skrevet tir. d. 30. december 2003 kl. 18:35:35| #1

arne_v
arne_v (1.005.653 point)
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 !

Skrevet tir. d. 30. december 2003 kl. 18:35:39| #2


Skrevet tir. d. 30. december 2003 kl. 18:36:09| #3


Skrevet tir. d. 30. december 2003 kl. 18:38:16| #4

arne_v
arne_v (1.005.653 point)
fcknet>

Jeg er ret sikker på at ceil(187) returnerer 187 ikke 200 !

Skrevet tir. d. 30. december 2003 kl. 18:56:05| #5

exp5
exp5 (14.850 point)
arne_v ->> Tak, vil du ikke prøve at lave et eksempel, hvor tallet er 187 ?

Skrevet tir. d. 30. december 2003 kl. 18:56:38| #6

exp5
exp5 (14.850 point)
fcknet -> ceil udskriver bare det samme tal.. :-(

Skrevet tir. d. 30. december 2003 kl. 18:59:20| #7

arne_v
arne_v (1.005.653 point)
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

Skrevet tir. d. 30. december 2003 kl. 18:59:48| #8

ahv
ahv (85.278 point)
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;
?>

Skrevet tir. d. 30. december 2003 kl. 18:59:54| #9

fangel
fangel (34.944 point)
arne -> må være

$tal = 187;
$scale = pow(10, floor(log($tal, 10)));
$rundet = ceil($tal/$scale) * $scale;
echo $rundet;

tror jeg...

Morten

Skrevet tir. d. 30. december 2003 kl. 19:00:17| #10

exp5
exp5 (14.850 point)
ok jeg prøver mig frem ;)

Skrevet tir. d. 30. december 2003 kl. 19:02:12| #11

ahv
ahv (85.278 point)
Morten -> det skal være log10 og ikke log

Skrevet tir. d. 30. december 2003 kl. 19:02:15| #12

arne_v
arne_v (1.005.653 point)
ahv>

Hvorfor skulle det ikke virke for <10 ?

Skrevet tir. d. 30. december 2003 kl. 19:05:23| #13

exp5
exp5 (14.850 point)
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 ?

Skrevet tir. d. 30. december 2003 kl. 19:08:08| #14

fangel
fangel (34.944 point)
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

Skrevet tir. d. 30. december 2003 kl. 19:11:06| #15

ahv
ahv (85.278 point)
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

Skrevet tir. d. 30. december 2003 kl. 19:11:20| #16

exp5
exp5 (14.850 point)
okay, alle virker faktisk, så smid et svar, dea_pg, og arne_v.

Skrevet tir. d. 30. december 2003 kl. 19:13:42| #17

ahv
ahv (85.278 point)
exp5 -> Dog virker virker de andres ikke for <10

Skrevet tir. d. 30. december 2003 kl. 19:15:18| #18

fangel
fangel (34.944 point)
svaa'r

Morten

Skrevet tir. d. 30. december 2003 kl. 19:16:26| #19

exp5
exp5 (14.850 point)
ok, vi mangler stadig arne_v's svar ;)

Skrevet tir. d. 30. december 2003 kl. 19:16:28| #20

arne_v
arne_v (1.005.653 point)
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.

Skrevet tir. d. 30. december 2003 kl. 19:16:38| #21


Skrevet tir. d. 30. december 2003 kl. 19:20:31| #22

exp5
exp5 (14.850 point)
Tak for svarene!

Håber det er en fair point fordeling

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Udtræk af enkelte felter fra bestemte kolonner i mysql

Oprettet den 11. februar 2012 kl. 19.27
hrole giver 30 point for svar | Giv et svar »

Procentregning

Oprettet den 11. februar 2012 kl. 11.26
sevinding giver 60 point for svar | Giv et svar »

Ville ikke tildele at upload det til database eller komme...

Oprettet den 10. februar 2012 kl. 21.23
tobrukDk giver 15 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger