Berechnung mit PHP ergibt falsches Ergebnis

evoleena

Erfahrenes Mitglied
Hallo Leute

Habe mal wieder ein Problem was ich überhaupt nicht verstehe!
Es geht um Berechnungen in PHP. Ich will meinen Ausgerechneten Wert mit 1,16 multiplizieren.
Der ausgerechnete Wert kommt durch kosten die in DB stehen mal personenanzahl mal Anzahl der Tag + andere kosten
In der DB hatte ich vorher float und nun habe ich es mit varchar probiert. Habe auch schon punkt und Koma ausprobiert aber es kommt immer das falsche Ergebnis raus.

z.B. ausgerechneter Wert = 524,30
dann mal 1,16 ergibt normalerweise 608,18
aber PHP rechnet mit da 631,05 aus.

und egal wie ich formatierung oder berechnung drehe ich komme net auf das richtige ergebnis!
Woran liegt das?
Hat jemand schon mal das gleiche Problem und kann mir sagen woran das liegt.
Ich weiß überhaupt nicht mehr weiter.
 
Probier's mal so:
PHP:
<?php
$zahl1 = 524.30;
$zahl2 = 1.16;
$ergebnis = $zahl1 * $zahl2;
echo $ergebnis;
?>
Das liefert das korrekte Ergebnis!

redlama
 
Das ist richtig! das habe ich auch schon mitbekommen!
da aber nun die 524,30 errechne und dann erst mit 1,16 multipliziere komme ich net mehr auf das Ergebnis.
Das ganz wird in ein Excel Datei geschrieben.
Vielleicht kann du mir ja genau sagen wie ich die kosten in der DB formatieren muss.
und die 1.16 habe ich so geschrieben
PHP:
$mwst=1.16;
 
Beschreib das Problem mal ein wenig ausführlicher (evtl. mit Quelltext).
Was wird wo berechnet und was kommt mit welchem Datentyp aus was für einer DB, ...

redlama
 
Ich glaube er meint dass er ein (,) statt Punkt hat.


$betrag = "524,30";

anstatt
$betrag = 524.30;

PHP:
$betrag = eregi_replace(",",".",$betrag);
dürfte das Problem lösen!
 
Ich bin eine sie! Aber egal

Also in Datenbank habe ich jetzt Varchar und die Beträge mit punkt
Im Excel wird das ganze wieder mit koma ausgegeben, da als zahl mit 2 dezimal stellen formatiert.
Bevor ich das Gesamtergebnis im Excel ausgebe wird noch mit 1.16 (mit punkt) multipliziert
und da kommt dann die 631,.... raus was aber falsch ist!

@lukasz habe den Befehl einfach eingefügt, aber das geht auch nicht! Oder muss ich dann je nachdem welches in frage kommt das andere Wegmachen?

Schwierig den quelltext zu zeigen der ist ein wenig lang!
als Beispiel :
in datenbank steht eine Übernachtung kostet 10.35 es sind drei Personen ->das sind 31,05 so und sie sind fünf tage da -> 155,25 so und dann ist eine Funktion eingebaut in der entschieden wird welche Mwst drauf muss dann wird dass ganz mit z.B. 1.16 multipliziert
dann das ergebnis im Excel ausgegeben welches natürlich falsch ist!
 
Also erstmal würde ich die Zahlen in der DB nicht varchar() sondern decimal(6,2) machen. Das bedeutet, dass Du decimale Zahlen mit 6 Stellen vor und 2 Stellen nach dem Komma speichern kannst (sollte reichen).
Und warum berechnest Du das ganze mit Excel und nicht mit PHP?
Da kannst Du doch die Daten aus der DB holen, berechnen und ausgeben!?

redlama
 
kann ich mal versuchen!
die werte werden mit PHP berechnet! und dann in excel ausgegeben, soll doch eine Rechnung werden!
ich hatte es mit angegeben, da ich nicht genau wußte ob es vielleicht auch am excel liegen könnte!
ich probiers dann nochmal mit decimal!
 
Wenn ich decimal einstelle, dann macht er die Nachkomastellen einfach weg egal was ich ales länge einstelle. Er stellt sich dann immer wieder auf 10,0

Wie ist das mit:
bcmul ( string linker Operand, string rechter Operand [, int Genauigkeit])
Was ist dann meine Ergebnisvariable?
 
Zuletzt bearbeitet:
Hm, ...
Das mit dem decimal klingt seltsam!
Aber sag mal, die Rechnung, die Du mit Excel erstellst, kannst Du doch mit mehreren Variablen füttern.
Warum machst Du nicht erst sämtliche Berechnungen mit PHP und übergibst dann die Werte so, dass es sie an der richtigen Position in der Excel Tabelle liegen und dort wie ein Rechnung aussehen.
Du musst ja nicht unbedingt mit Excel rechnen, ...
Oder sehe ich das falsch?

redlama
 
Zurück