Avatar billede rasmus-madsen Nybegynder
17. august 2006 - 09:00 Der er 16 kommentarer og
1 løsning

Regnestykke bruger ikke decimaler.

Hej allesammen.

Min kode laver en regnefejl.

Min kode er :
$lagt1 = ($lagt / 100.00) * $procent;

Problemet er at den ikke udskriver i to decimaler.
$procent indeholder xx,xx (altså to decimaler).

Men når jeg udskriver færdig resultatet er det ikke med to decimaler.

Nogen der har nogen ide hvorfor ?

På forhånd tak.
Rasmus Madsen
Avatar billede kimg Nybegynder
17. august 2006 - 09:10 #1
Dette burde virke, har ikke testet det.
$lagt1 = ($lagt / 100.00) * number_format($procent, 2, '.', '');

Kim
Avatar billede kimg Nybegynder
17. august 2006 - 09:11 #2
Avatar billede miqe Nybegynder
17. august 2006 - 09:14 #3
Hvordan udskriver du den?
printf("%.2f",$lagt1); skulle udskrive med 2 decimaler.
Avatar billede rasmus-madsen Nybegynder
17. august 2006 - 09:27 #4
Kimg --> Det virker desværre ikke :(.

Mige--> fordi det skal i database senere.
Avatar billede kimg Nybegynder
17. august 2006 - 09:29 #5
number_format($lagt1, 2, '.', '');
Avatar billede kimg Nybegynder
17. august 2006 - 09:31 #6
Har lige teste det virker fint
$lagt1 = ($lagt / 100.00) * number_format($procent, 2, '.', '');
number_format($lagt1, 2, '.', '');

Og husk at sætte din database til decimaler

Kim
Avatar billede kimg Nybegynder
17. august 2006 - 09:31 #7
;-)
$lagt1 = ($lagt / 100.00) * number_format($procent, 2, '.', '');
echo number_format($lagt1, 2, '.', '');
Avatar billede rasmus-madsen Nybegynder
17. august 2006 - 09:37 #8
Så må det være tidligere det går galt..
Den plusser først nogen tal også gør den det med at gange.
Avatar billede Slettet bruger
17. august 2006 - 09:37 #9
$lagt1 = number_format(($lagt / 100.00) * str_replace($procent, ',', '.'), 2, ',', '.');
Avatar billede rasmus-madsen Nybegynder
17. august 2006 - 09:38 #10
foreach ($sammen as $value) {
$value = number_format($value, 2, '.', '');
$lagt = $lagt + $value;
$lagt = number_format($lagt, 2, '.', '');
}
$lagt1 = ($lagt / 100.00) * number_format($procent, 2, '.', '');

Syntes snart jeg har prøvet det hele.
Avatar billede Slettet bruger
17. august 2006 - 09:39 #11
PHP antager, at kommaet i dit procent-tal er en tusinde seperator, og vil derfor naturligvis ikke "ordne" tallet til engelsk skrivemåde med number_format. Du skal derfor bruge str_replace til at erstatte dit komma med et punktum (engelsk komma), for derefter at bruge number_format på hele din nye streng.
Avatar billede rasmus-madsen Nybegynder
17. august 2006 - 09:41 #12
Wicez. Den giver 0,00. Så decimaler virker men ikke rengestykket.
Avatar billede Slettet bruger
17. august 2006 - 09:41 #13
For at uddybe det lidt mere:

$lagt1 = $lagt/100; // Dividerer med 100
$procent = str_replace($procent, ',', '.'); //xx,xx bliver til xx.xx (engelsk version).
$lagt1 = $lagt1 * $procent;
$lagt1 = number_format($lagt1, 2, ',', '.'); //xx.xx bliver nu udskrevet som xx,xx
Avatar billede Slettet bruger
17. august 2006 - 09:44 #14
$lagt1 = $lagt/100; // Dividerer med 100
$procent = str_replace(',', '.', $procent); //xx,xx bliver til xx.xx (engelsk version).
$lagt1 = $lagt1 * $procent;
$lagt1 = number_format($lagt1, 2, ',', '.'); //xx.xx bliver nu udskrevet som xx,xx

eller

$lagt1 = number_format(($lagt / 100.00) * str_replace(',', '.', $procent), 2, ',', '.');

Jeg havde byttet om på parametrene i str_replace
Avatar billede kimg Nybegynder
17. august 2006 - 09:44 #15
Ja, det er selvfølgelig korrekt, jeg tog udgangspunkt i at det var punktum ;-)

Kim
Avatar billede rasmus-madsen Nybegynder
17. august 2006 - 09:45 #16
takker det virker :D
Avatar billede Slettet bruger
17. august 2006 - 09:52 #17
Selv tak for pointsne. :o)
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