Avatar billede compac Seniormester
10. juli 2011 - 16:20 Der er 8 kommentarer og
1 løsning

Afrunding af tal i array

Jeg har et array hvor jeg vil have afrundet tallene og reduceret decimalerne, men det vil ikke lykkes.

Mit array ser således ud:
$lat[$i]["lat"]

Det indeholder tal der har dette udseende: 55.12345
Jeg vil afrunde det så der bliver 2 tal efter punktummet.

Jeg forsøger så med denne måde:

$str[$i] = $lat[$i]["lat"];
$num = (int)$str[$i];
$afru = round($num,2);


- men det giver kun 55.

Hvad gør jeg forkert?
Avatar billede kjeldsted Novice
10. juli 2011 - 16:34 #1
PHP er faktisk ligeglad med hvilken type data en streng indeholder. Så derfor er datakonvertering unødvendig i PHP.

Derfor skal det rettes til:

$str[$i] = $lat[$i]["lat"];
$num = $str[$i];
$afru = round($num,2);


Desuden kan du jo ikke have decimaltal i en INT, hvilket formodentlig er grunden til at de bliver fjernet.
Avatar billede kjeldsted Novice
10. juli 2011 - 16:35 #2
Og hvis det skulle gøres med datakonvertering skal der jo så være float i stedet for int da float understøtter decimal tal.
Avatar billede compac Seniormester
10. juli 2011 - 16:48 #3
Jeg har afprøvet din kode. Den afskærer alt efter punktummet.
For en sikkerheds skyld prøvede jeg lige at tjekke, om $num indeholdt en værdi inden round. Den indeholder hele tallet.
Avatar billede kjeldsted Novice
10. juli 2011 - 16:53 #4
Hvis jeg skriver
$num = "55.12345";
$afru = round($num,2);


får jeg at $afru = 55.12
Avatar billede kjeldsted Novice
10. juli 2011 - 16:57 #5
Men hvad så hvis du skriver
$str[$i] = $lat[$i]["lat"];
$num = (float)$str[$i];
$afru = round($num,2);
??
Avatar billede compac Seniormester
10. juli 2011 - 17:21 #6
Ja, det får jeg også. Men stadigvæk det fulde tal, hvis jeg skriver echo $num; inden round-linen.
Det var derfor jeg troede at datatypen havde noget at sige.
Avatar billede compac Seniormester
10. juli 2011 - 17:22 #7
Jeg prøver lige dit sidste forslag.
Avatar billede compac Seniormester
10. juli 2011 - 17:26 #8
Ja, så er den hjemme. Læg et svar
Avatar billede kjeldsted Novice
10. juli 2011 - 17:33 #9
Æh, ja. Kunne da ikke lige forstå det du skrev i #6. Selvfølgelig får du alle decimaler hvis du udskriver variablen før round() funktionen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester