PHP Rundungsfehler?

  • #1
W

wibni

Bekanntes Mitglied
Themenersteller
Dabei seit
15.04.2005
Beiträge
71
Reaktionspunkte
0
Hallo,

ich habe in einer Datenbank eine Zahl wie z.B. 11884.585.
Nach meiner Abfrage mit PHP gibt er mir mit echo oder print 11884,585 aus.
Keine Ahnung wo das Komma plötzlich herkommt...?
Vesuche ich es mit printf (%0.2f,$cellvalue); entsteht aus dem Ursprungswert 11884.00, welches ja offensichtlich falsch gerundet ist.
Auch mit echo number_format($cellvalue, 2,->.',->.'); erhalte ich die 11884.00.

Kann mir jemand sagen was da falsch läuft?
 
  • #2
Hi,

In der DB (zumindest bei mySQL, wenn ich mich richtig erinnere :) ) steht der Punkt für ein Komma (also anders rum als in Deutschland) und daher kommt das Komma wenn du das mit php ausgeben lässt.
 
  • #3
Code:
<?php
$zahl = 11884.585;
echo Zahl: <b>$zahl</b><br>;
echo number_format: .number_format($zahl,2,,,.).<br>;
echo round: .round($zahl,2).<br>;
echo ceil: .ceil($zahl).<br>;
echo floor: .floor($zahl).<br>;
printf (printf: %0.2f,$zahl);
?>

Zahl: 11884.585
number_format: 11.884,59
round: 11884.59
ceil: 11885
floor: 11884
printf: 11884.58

gruss conny ;)
 
  • #4
@Björn:
also in der DB steht der Wert mit dem Punkt anstelle eines Kommas. das ist klar.
nach deiner annahme, würde das ja bedeuten, dass php prüft ob ich ein deutsches system habe und mir dann anstelle des punktes eigenmächtig ein komma setzt?

@conny:
setze in deinem bsp. $zahl = 11884,585; und dann stehst du genauso vor dem selben problem wie ich. das runden funktioniert nicht mehr. bleibt wohl nur das komma durch den punkt zu ersetzen.

mir stellt sich aber noch die frage, warum er aus dem punkt in der DB plötzlich ein komma macht??? wenn er es einfach wiedergeben würde, wäre doch alles fein...
is schon manchmal verwirrend....
 
  • #6
du hast doch immer noch ein punkt als trennzeichen!?
zumindest zeigt es das bei mir so an....?

ersetze mal den punkt durch ein komma: $zahl = 11884,585;
 
  • #7
Moment, hatte es so verstanden, dass ich die Zahl in setzen sollte ;)

Punkt durch Komma ersetzen geht nicht wie du schon richtig bemerkt hast.

Von welchem Datentyp ist überhaupt das Feld in der Tabelle ???
 
  • #8
BCD, also Binary Coded Dezimals.
kann natürlich sein, dass er tatsächlich schaut ob ich ein deutsches system habe und den punkt der datenbank eigenmächtig durch ein komma ersetzt.
obwohl mir das ziemlich weit hergeholt scheint....
 
  • #9
Teste es mal mit DOUBLE, das geht deftinitiv ;)
Bei mir jedenfalls ;)
 
  • #10
hmm...
kann die datenbank nicht verändern. ist ein 2nd-party product.
werde wohl einfach das komma mit php durch einen punkt ersetzen...

na mal sehen....
thanks anyway ;)
 
  • #11
Eben fällt mir grad ein, dass wir hier gar nicht von MySQL sprechen, du verwendest ja son Billig-Produkt ;D dessen Namen ich nicht erwähnen möchte.

Dacht mir doch gerade, der Datentyp BCD is mir noch nicht so oft untergekommen ;D ;D
Nu kanns natürlich daran liegen wie deine DB das interpretiert, da hab ich leider Null-Nix-Versteh ;D
 
  • #12
falls du die kollegen aus redmond meinst, damit bin ich fertig. bin jetzt aufgestiegen und lasse mich von pervasive sql quälen.....
:-\
 
  • #13
und die loesung meines problems liegt wahrscheinlich im connection string.
aber bitte frage mich niemand wieso? :eek:

man aendere: $con_str = Provider=PervasiveOLEDB;Data Source=Himdat;;
zu: $con_str =Driver={Pervasive ODBC Client Interface};Data Source=himdat;;

und freue sich, dass man nur ca. 6h gebraucht hat!

Keine Ahnung, was OLEDB da nicht kann oder anders macht als ODBC.

Thanks anyway...
 
Thema:

PHP Rundungsfehler?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben