Avatar billede nemlig Professor
06. maj 2007 - 19:00 Der er 23 kommentarer og
2 løsninger

Divider - Resultat uden decimaler

Hej alle.
Regnestykket 5 / 2 = 2,5

Hvordan fjerner jeg decimalet, da jeg ønsker, at 5 / 2 = 2.
(Skal bruges til noget helt andet, men princippet er som ovenfor).
Avatar billede hmortensen Nybegynder
06. maj 2007 - 19:02 #1
Du kan bruge floor(). Den vil altid runde ned.
Avatar billede simplus Nybegynder
06. maj 2007 - 19:24 #2
Og hvis du ikke vil have den afrundet, og dit nummer altid indholder 2 decimaler og et tegn til at adskille decimal tallene fra de 'normale' tal jamen så kan denne også bruges:

$length = strlen($number);
$length = $length-3;
$number = substr($number, 0, $length);
Avatar billede jakobdo Ekspert
06. maj 2007 - 19:29 #3
simplus: Hvorfor ikke bare bruge denne funktion: http://www.php.net/manual/en/function.number-format.php
Avatar billede nemlig Professor
06. maj 2007 - 19:34 #4
Tak for 3 gode forslag. Jeg vælger at gøre brug af floor og har samtidig fundet funktionen, der altid runder op: ceil(), som jeg også skal bruge.
Sender I alle 3 lige et svar, så jeg kan give point. Jeg har forhøjet.
Avatar billede hmortensen Nybegynder
06. maj 2007 - 19:39 #5
Det var så lidt.

"(Skal bruges til noget helt andet, men princippet er som ovenfor)."
Måske du vil uddybe din konkrete problemstilling, da løsningen måske kan være en anden.
Avatar billede simplus Nybegynder
06. maj 2007 - 19:49 #6
jakobdo - fordi jeg simpelthen ikke kendte den :-)

nemlig - samler ikke på point, men tak.
Avatar billede jakobdo Ekspert
06. maj 2007 - 19:49 #7
Jeg skal ikke have point for mit svar.
Avatar billede jakobdo Ekspert
06. maj 2007 - 19:51 #8
simplus: Man skulle jo også gerne lære så længe man lever.
Avatar billede nemlig Professor
06. maj 2007 - 19:55 #9
Jeg skal beregne morarente, som går på, at hvis en betalingsfrist overskrides, så skal der regnes med 1,5% rente pr. påbegyndt måned.
Derfor bruger jeg:

$morarente_kr= 10705 * 1.5 / 100 * ceil($antaldage / 31) ;  //$antaldage = antal dage betalingsfristen er overskredet.
//Ville have brugt floor($antaldage / 31) + 1, men her er det nemmere med ceil.
echo "Morarente = " .number_format($morarente_kr, 2, ',', '.')."<br>";

Men kan I sige mig, hvorfor resultatet er kr. 160,57 (160,575).
Hvis jeg tager lommeregneren, er resultatet kr. 160,58 (efter alm. regler, skal der rundes op.
Avatar billede jakobdo Ekspert
06. maj 2007 - 19:58 #10
floor runder ned.
Prøv at kig på round()
Avatar billede nemlig Professor
06. maj 2007 - 20:10 #11
Jamen - det er først når jeg bruger number_format, at der rundes ned.
Hvis jeg gør sådan her:

$res = 10705 * 1.5 / 100;
echo $res; // Resulatet = 160.575
echo number_format($res + $row6[rykker1], 2, ',', '.'); //Resultat = 160,57

Jeg vil gerne vise, at resulatet er: 160,58 (altså efter alm. afrundingsregler.)
Avatar billede nemlig Professor
06. maj 2007 - 20:11 #12
Ups, fejl i ovenstående kode: Skulle være sådan her:

Jamen - det er først når jeg bruger number_format, at der rundes ned.
Hvis jeg gør sådan her:

$res = 10705 * 1.5 / 100;
echo $res; // Resulatet = 160.575
echo number_format($res, 2, ',', '.'); //Resultat = 160,57

Jeg vil gerne vise, at resulatet er: 160,58 (altså efter alm. afrundingsregler.)
Avatar billede jakobdo Ekspert
06. maj 2007 - 20:21 #13
number_format() tror jeg ikke runder op.
Den klipper bare resultatet.
Så hvad om du laver:
$res = 10705 * 1.5 / 100;
echo $res; // Resulatet = 160.575
$res = round($res,2);
echo number_format($res, 2, ',', '.'); //Resultat = 160,57
Avatar billede nemlig Professor
06. maj 2007 - 20:33 #14
Jeg fatter det ikke:
I forlængelse af det sidste, jeg har skrevet, har jeg prøvet følgende:

echo "Samlet beløb = " .number_format(160.575 + 10705, 2, ',', '.');
Her er resultatet 10.865,58 - altså sker der en oprunding.
Derfor klipper number_format ikke, som jakobdo skriver.
Men hvad går galt...
Avatar billede nemlig Professor
06. maj 2007 - 21:05 #15
Mon det er min version af PHP, det er galt med.

Hvis jeg skriver:
echo round(160.575,2);

Er resultatet 160,57
Round runder heller ikke op.
Avatar billede nemlig Professor
06. maj 2007 - 21:26 #16
Har lige smidt koden på en webserver (one.com). Her virker afrundingerne, som de skal - altså både med round og number_format.
Lokalt bruger jeg Wamb-server, som åbenbart giver problemerne.
Beklager forvirringen.
Jakobdo - send lige et svar også :-)
Avatar billede jakobdo Ekspert
06. maj 2007 - 21:32 #17
Jeg har lige testet på min server, og disse giver forskellige svar:

echo round(1.95583, 2);  // 1.96
echo round(160.575, 2);  // 160.57

Det forstår jeg ikke helt.
Avatar billede jakobdo Ekspert
06. maj 2007 - 21:32 #18
Jamen så får du da et svar.
Avatar billede nemlig Professor
06. maj 2007 - 21:45 #19
Rart at høre, at det ikke kun er min server, det er galt med. Mon ikke, der er en parameter, som skal sættes. Lige meget - bare det virker på Web-serveren.
Avatar billede terrak Nybegynder
06. maj 2007 - 22:03 #20
Avatar billede nemlig Professor
06. maj 2007 - 22:12 #21
Terrak: Tak for infoen. Har du en nem løsning på problemet - jeg bliver ikke helt klog på linket.
Avatar billede terrak Nybegynder
07. maj 2007 - 07:11 #22
Jeg har samme problem på min Windows server, men kunne ikke få det til at virke med de forslag i linket. Det eneste det viser er desværre kun at det er et kendt problem.
Avatar billede nemlig Professor
18. maj 2007 - 16:35 #23
Sender Simplus også et svar, så jeg kan tildele point? :-)
Avatar billede nemlig Professor
10. juni 2007 - 16:02 #24
Jeg lukker - tak for hjælpen.
Avatar billede jakobdo Ekspert
10. juni 2007 - 19:07 #25
Takker for point.
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