number_format Problem mit den Nachkommastellen
Bernard
- php
0 Cheatah0 Bernard0 Sven Rautenberg0 Bernard0 Sven Rautenberg0 Bernard0 David Tibbe0 Bernard
0 David Tibbe
Hallo,
ich habe eine Zahl des Datentyps double und möchte Ihn so formatieren, das er an die "tausenderstellen" einen Punkt setzt und falls ein Punkt in der nicht formatierten Zahl auftaucht erkannt wird das es sich um die Nachkommastelle handelt.
das funktioniert soweit auch schon:
$zahl= number_format($zahl,'2',',','.');
Leider erstellt mir diese Funktion so wie sie ist immer Nachkommastellen, auch wenn es eine Ganze Zahl ist.
z.B. die Zahl ist 2399.5 wird nach der Formatierung zur 2.399,50 das ist super aber leider wird aus der 3999 eine 3.999,00
Ich würde gerne die Nachkommastellen nicht angezeigt bekommen wenn es sich um eine Ganzzahl handelt.
mfg
Bernard
Hi,
Ich würde gerne die Nachkommastellen nicht angezeigt bekommen wenn es sich um eine Ganzzahl handelt.
dann prüfe dies zuvor.
Cheatah
Hallo,
dann prüfe dies zuvor.
Aber ich würde schon gerne die Punkte an den "tausenderstellen" haben.
Moin!
dann prüfe dies zuvor.
Aber ich würde schon gerne die Punkte an den "tausenderstellen" haben.
function my_personal_number_format($number)
{
if (number_is_integer($number))
{
number_format(ohne_nachkommastellen);
}
else
{
number_format(mit_nachkommastellen);
}
}
- Sven Rautenberg
Hallo,
if (number_is_integer($number))
was genau macht number_is_integer , ich finde dazu bei google nichts.
Wenn das testet ob Nachkommastellen vorhanden sind, wie kann ich dann meine number_format funktion gestalten damit die Nachkommastellen nicht angezeigt werden nachdem ich sie formatiert habe.
mfg
Bernard
Moin!
if (number_is_integer($number))
was genau macht number_is_integer , ich finde dazu bei google nichts.
Das ist eine ausgedachte Funktionsbezeichnung, die dir deren Sinn verdeutlichen soll, dass sie prüft, ob eine Zahl Nachkommastellen hat oder nicht.
Genauso wie der gesamte Code ausgedacht ist, die lediglich das Funktionsprinzip darlegen sollte und insgesamt noch an sehr vielen Stellen eine explizite Ausarbeitung benötigt.
- Sven Rautenberg
Hallo,
ich habe das jetzt mal so probiert, aber irgendwie klappt das auch nicht
if (preg_match(".",$zahl));
{
$zahl= number_format($zahl,'2',',','.');
}
Irgendwie geht der auch in die if- Bedingung rein wenn kein . vorhanden ist.
woran kann das liegen ?
mfg
Bernard
Hallo Bernhard,
woran kann das liegen ?
Schau dir an, was preg_match() zurück liefert.
Außerdem willst du sicherlich nicht überprüfen, ob ein Punkt in der Zahl vorkommt,
sondern ob es sich bei ihr um einen Integer handelt.
Grüße
David
Hallo zusammen
Schau dir an, was preg_match() zurück liefert.
Ach, 0 == FALSE, da war was :/
Grüße
David
Hallo,
tja habe dann auch eine Funktion gefunden.
is_int() oder is_integer()
nun sieht die Sache so aus:
if (is_int($zahl))
{
$zahl= number_format($zahl,'0',',','.');
}
else
{
$zahl= number_format($zahl,'2',',','.');
}
Leider funktioniert das immer noch nicht.
Es wird nicht in die Bedingung if(is... hineingegangen sondern immer nur in die else.
Ich habe mir auch die Zahlen mal mit einem echo ausgeben lasse. Alles Integer bzw. alle ohne . und ,
Was mache ich nun schon wieder falsch ?
mfg
Bernard
Moin!
tja habe dann auch eine Funktion gefunden.
is_int() oder is_integer()
Dein Suchbemühen ist toll - leider hast du das falsche gefunden.
is_integer() prüft den Typ der Variablen. PHP verwaltet intern Variablen in unterschiedlichen Typen. Wenn deine Rechnung (irgendwie müssen die darzustellenden Zahlen ja entstehen) grundsätzlich Kommazahlen erzeugt, dann sind die Zahlen auch dann Kommazahlen, wenn die Nachkommastellen "0000" lauten.
Kennzeichen einer nachkommalosen Zahl ist, dass ihr Wert genau so groß ist, wie der Wert, wenn man die Nachkommastellen abschneidet.
Mit intval() (siehe http://de3.php.net/manual/de/function.intval.php) wandelst du einen Wert in eine Integerzahl.
Und mit if($wert == intval($wert)) prüfst du eben, ob Nachkommastellen vorhanden sind.
- Sven Rautenberg
Hallo
ich meine:
if (preg_match("/ .\ /",$Zahl))
{
$Zahl= number_format($Zahl,'2',',','.');
}
Das letzte Posting litt unter blindem copy und paste.
Jetzt läufts auch.
mfg
Bernard
Hallo Bernhard,
was genau macht number_is_integer
Nichts. Das ist nur der Pseudoname für eine Funktion, die du nun entsprechend
suchen musst. Sven nannte dir den Weg, die Funktionen zusammensuchen und
das Ganze umsetzen ist nun dein Part.
Falls du es noch nicht kennst, das Manual ist (z.B.) hier zu finden:
http://php3.de/manua/de
Grüße
David