Avatar billede dallan2007 Nybegynder
25. september 2012 - 10:30 Der er 9 kommentarer og
1 løsning

Tilføje punktum til et beløb? (prisformattering)

Er der en let måde at tilføje et punktum til et beløb? Altså således at:

1234,50 = 1.234,50
7777 = 7.777
12471,52 = 12.471,52
888471 = 888.417
25,50 = 25,50

Osv.
25. september 2012 - 11:29 #1
Prøv med number_format methoden.  Her er et link.
Avatar billede michael_stim Ekspert
25. september 2012 - 11:57 #2
25. september 2012 - 12:47 #3
michael_stim:  ja.  (Jeg er venstrehåndet, så det var min venstre hånd der skulle have indsat linket før min højre hånd trykkede på Opret knappen.  Men i mit gode kristne sindelag fulgte jeg rådet fra Jesus om ikke at lade venstre hånd vide hvad højre hånd gør.)
Avatar billede dallan2007 Nybegynder
27. september 2012 - 10:44 #4
Ja jeg har kigget på number_format, men det forvirrer umiddelbart mere end det hjælper.
Avatar billede michael_stim Ekspert
27. september 2012 - 11:07 #5
Jeg er faktisk lidt i tvivl om at der er en funktion der fjerner komma 00 hvis det eksisterer. Ellers kan man lave en, i min øjne,  ikke så fin funktion, der ser således ud:


$mitNummer=123456789;
$tusinde=str_replace(",00", "", (string)number_format($mitNummer, 2, ",","."));
echo $tusinde;
27. september 2012 - 12:11 #6
Michael, som jeg læser spørgsmålet bad dallan2007 ikke om at få ,00 fjernet.  1234,50 skal blive til 1.234,50

Bortset fra det, så kan man faktisk få number_format til at fjerne  ,00 

$tal = '777777777,77';
$formattet = number_format($tal, 0, ',', '.');
echo $formattet;

giver 77.777.777

(Pudsigt nok:

$tal = '777777777.77';
$formattet = number_format($tal, 0, ',', '.');
echo $formattet;

giver 77.777.778  , så funktionen opfatter åbenbart .78 som en decimal væerdi der skal rundes op, hvorimod ,78 blot opfattes som en tekststreng.)

Problemet med number_format er at den altid resulterer i et bestemt antal decimaler.  number_format($tal, 2) giver altid to decimaler, således at 1234,50 giver 1.234,50 og 7777 giver 7.777,00 , ikke 7.777 som dallan2007 spurgte om. 

Så vi kommer tilbage til det samme: ikke nogen (af mig bekendt) standard number_format funktion der indsætter tusind separator men lader de bestående antal decimaler uforandret. 

dallan2007, hvis du kan leve med at 7777 bliver til 7.777,00 o.s.v., så kan du bruge number_format.  Standard vil number_format bruge komma som tusind separator og punktum som decimal separator.  Derfor skal en dansker bruge fire parametre, den første tallet selv, den andet antal decimaler, den tredje det der skal bruges som decimal separator, og den fjerde det der skal bruges som tusind separator.
Avatar billede michael_stim Ekspert
27. september 2012 - 13:15 #7
#6
Næ, det er sandt, men det er det, der bliver vist i hans eksempel:

1234,50 = 1.234,50
7777 = 7.777 <- Her
12471,52 = 12.471,52
888471 = 888.417 <- og her
25,50 = 25,50
04. oktober 2012 - 19:37 #8
Dallan2007, kom du fra det igen?  Jeg foreslog, som tilnærmelse til det problem du stiller, at bruge number_format til at formattere dine tal med punktum som tusind separator.  En ulempe er, at hvis du vil bevare decimalerne i for eksempel 1234,50, så får du decimaler i alle tal, så 7777 bliver til 7.777,00.  Det er nok det problem michael_stim i #5 foreslår en løsning på.  Fik du afprøvet det?  (Jeg talte vist forbi michael_stim, men han tog to trin på en gang.  Du bad ikke om at få fjernet ,00 fra tal som 7777, men hvis du bruger number_format og får 7.777,00 har du behov for at få fjernet de ,00 der opstår.)

Forventer du flere indlæg til spørgsmålet?  Spørgsmålet er i mellemtiden kommet på side 15 af 'alle kategorier' og får nok ikke meget ny opmærksomhed.  Jeg foreslår, at du lukker her ved at bede om svar hvis du mener du har fået hjælp og ellers lukker med eget svar.
Avatar billede dallan2007 Nybegynder
15. oktober 2012 - 12:32 #9
Kom væk fra det  - sorry - i må gerne begge smide et svar så lukker jeg.
18. oktober 2012 - 11:35 #10
Svar fra mig.
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