Avatar billede ugologic Nybegynder
25. januar 2011 - 10:36 Der er 6 kommentarer og
1 løsning

Lægge tal sammen

Hej,

Jeg har en tabel hvor der er blandt andet er nogle tal der skal lægges sammen.

Disse tal kan fx se således ud:

38,45   
99,09   
88,66   
4.628,17

Når jeg lægger disse sammen (via $restgæld += $row['Gæld'];)

så bliver summen: 229.628

Jeg er rimelig sikker på det er pga. tusindtalseperatoren i det 4. tal.

Hvordan håndterer jeg det bedst? Hvis tallet er over 1000 så vil der være tusindtalseperator, men php ser det som et komma...
Avatar billede repox Seniormester
25. januar 2011 - 10:42 #1
Det er også pga. tusindetals seperatoren - men også pga. kommaet.

Når du skal lægge tal sammen skal det foregå med integers eller floats.

integers er heltal - floats er decimaltal. Og i den engelske verden er decimaler separeret med et punktum, ikke komma. Og i floats bruger man ikke tusindtals seperaring.

Så tal skal se sådan ud:
39.45
99.09
88.66
4628.17
Avatar billede ugologic Nybegynder
25. januar 2011 - 10:47 #2
Jah..

Men nu har jeg en tabel med 250.000+ poster. Så jeg ændrer ikke lige tallene..
Avatar billede erikjacobsen Ekspert
25. januar 2011 - 10:58 #3
Lidt mærkeligt at gemme tal med formattering.

Men du kan efter du har hentet det formatterede tal, med nogle replace, fjerne "." som tusindtalsseparator, og derefter erstattet "," med "." - så vil PHP nok regne rigtigt.
Avatar billede tjens Nybegynder
25. januar 2011 - 11:06 #4
Kig brugerdebatten igennem i PHP-manualen under floatval: http://php.net/manual/en/function.floatval.php

Der er eksempler på punktum/komma problematik.
Avatar billede repox Seniormester
25. januar 2011 - 11:24 #5
#2
Det er meningsløst at instruere mig om at du ikke vil ændre tallene - det er almen programmeringslogik og du kan ikke ændre måden det virker på alligevel, hvorfor - som #3 også er inde på - at det kan undre at du gemmer formatterede tal.

Du har to muligheder - at rette dine poster i tabellen (kan gøres nemt via et PHP script) eller rette tallene til ved brug, så du kan lægge dem sammen.

Uanset hvad vil det nemmeste være at lave noget ala:
$tal = str_replace( array(".", ","), array("", "."), $tal);
Avatar billede ugologic Nybegynder
25. januar 2011 - 11:30 #6
Tak for input.

Jeg fik ændret tallene i databasen, da det gjorde det noget nemmere at arbejde med.

Dem der vil have point smid et svar.
Avatar billede ugologic Nybegynder
24. februar 2011 - 08:01 #7
.
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