Hallo,
ich lasse mir aus einer Datenbank einen Gesamtpreis errechnen. Dort steht beispielsweise ein Preis von 19,90, den ich mit einer Stückzahl von 2 multiplizieren möchte. Das mache ich nicht bei der Abfrage, sondern bei der Ausgabe mit PHP über das gewöhnliche Multiplizieren "*".
Er zeigt mir als Ergebnis 39,8 -> ohne die Null am Ende. Ich möchte aber, daß er mir die Null anzeigt, weil ich den Preis korrekt darstellen möchte.
Wie kann ich das beeinflussen?
Ankündigung
Einklappen
Keine Ankündigung bisher.
0 nach dem Komma
Einklappen
Neue Werbung 2019
Einklappen
X
-
Ein Gast antwortetemhm ... naja, was man nicht alles machen könnte ...
schlaf gut
PHP-Code:<?php
$str = '37,6';
function numberFormat($number, $decimals = 2, $dec_point = ',', $thousands_sep = '.') {
if(is_string($number)) {
$numberArr = explode($dec_point, $number);
$addZeros = $decimals - strlen($numberArr[1]);
$numberArr[1] = ($addZeros > 0) ? $numberArr[1] . str_repeat('0', $addZeros) : substr($numberArr[1], 0, $decimals);
$number = (int) $numberArr[0] + (int) $numberArr[1] * pow(0.1, $decimals);
}
return number_format($number, $decimals, $dec_point, $thousands_sep);
}
echo numberFormat($str);
?>
-
Ein Gast antworteteZwar nicht ellegant, aber naja:
PHP-Code:<?php
error_reporting(E_ALL);
$str = '37,6';
$preis_punkt = number_format( str_replace(',','.',$str) ,2);
$preis_komma = str_replace('.',',', $preis_punkt);
echo $preis_punkt, '
';
echo $preis_komma, '
';
?>
Einen Kommentar schreiben:
-
Ein Gast antworteteDer OP brauch ja blos ordenlich seine Preise anlegen, dann ist die Funktion überflüssig
Wenn du mal viel Zeit hast, dann suche mal hier im Forum.
Das Thema war schon oft hier.
PS:
Deine Funktion geht nicht.
Probier mal: $str = '37,6';
Einen Kommentar schreiben:
-
Ein Gast antwortetehm ... man kann doch bisschen rumschreiben ... wenn er nen script rück kriegt muss er sowieso was machen um rechnen zu können ... ja der computer kann rechnen, der mensch lesen ... darum gibts fuzies die ne rechtschreibung machen ...
und es gibt soviele leute, die soviel unsinniges zeug mit php realisieren, warum denn nicht ne zahl mit komma
PHP-Code:<?php
$str = '37,63';
function deFormat($preis) {
if(is_string($preis)) {
$preisArr = explode(',', $preis);
$preis = (int) $preisArr[0] + (int) $preisArr[1] * 0.01;
}
return number_format($preis, 2, ',', '.');
}
echo '
';
echo number_format($str, 2, ',', '.');
echo deFormat($str);
?>
Einen Kommentar schreiben:
-
Ein Gast antworteteNaja der Witz ist aber das Zahlen keine Kommas haben
Der nächste Witz ist, dass er keine Zahlenwert ausgibt, sondern nur ein String und diesen formatieren will.
Und da dieser String ein Komma hat, wird nur der Teil vor dem Komma erkannt, und Rest nicht.
Somit ist das ganze falsch.
In der Programmierung wird nunmal mit Punkt gerechnet.
Hoffe er baut kein Shop-System, denn dann wird er auf die .... fliegen
Einen Kommentar schreiben:
-
Ein Gast antworteteklar ist es dann keine zahl mehr ... aber warum sollte ich nach einer vorbereiteten ausgaben nochmals damit arbeiten ... würde ich einen html hinzufügen, täte es auch schlecht aussehen ... und wie ers mir ausgibt ist mir ziemlich egal, da es letztendlich nur buchstaben und zahlen sind ...
echo sprintf('%1$s: € %2$s', 'Preis', number_format( 19.8 , 2, ',', '.')); ... muss zwar als string angegeben werden ... aber ich glaub man kanns verkraften, wenn mans haben kann wies einem gefällt ...
Einen Kommentar schreiben:
-
Ein Gast antworteteEr zeigt mir als Ergebnis 39,8 -> ohne die Null am Ende
Du kannst nicht 39,8 als Zahl übergeben, sondern nur als String.
Diesen String kannst du aber nicht formatieren.
Hier geht es:
echo number_format( 19.8 , 2, ',', '.').'
';
weil der Wert als Zahl da steht
EDIT:
http://php3.de/number_format
Schau dir mal bitte die Beispiele an.
Einen Kommentar schreiben:
-
Ein Gast antworteteCode:19,00 <-- 19.00 19,80 <-- 19.80
Einen Kommentar schreiben:
-
Ein Gast antworteteJa und was fällt dir auf ?
Einen Kommentar schreiben:
-
Ein Gast antwortetePHP-Code:<?php
error_reporting(E_ALL);
echo number_format( '19,8' , 2, ',', '.').'
';
echo sprintf( '%.2lf', '19,8' ).'
';
echo number_format( 19.8 , 2, ',', '.').'
';
echo sprintf( '%.2lf', 19.8 ).'
';
?>
Einen Kommentar schreiben:
-
Ein Gast antworteteMal abgesehn davon, dass mit mit Komma das garnicht formatieren kann:
PHP-Code:<?php
error_reporting(E_ALL);
echo number_format( '19,8' , 2).'
';
echo sprintf( '%.2lf', '19,8' ).'
';
echo number_format( 19.8 , 2).'
';
echo sprintf( '%.2lf', 19.8 ).'
';
?>
Einen Kommentar schreiben:
-
Ein Gast antwortetenaja ... vma lassen wir das ... dennoch sollte sich hier der eine oder andere mal angewöhnen etwas benutzerfreundlicher zu schreiben (ist besonders an matthias gerichtet, der genauer lesen sollte ... außer natürlich er wäre auch der typografischen schreibweise mit dem punkt freundlich gestimmz) ...
Einen Kommentar schreiben:
-
Ein Gast antworteteNaja, Preisangaben werden eigentlich auch mit Punkt gerechnet (Buchhaltung lässt grüßen).
Klar schreibt jeder wie er will, weil es keine Vorschrift gibt.
Aber wenn er es korrekt schreiben möchte, sollte er auch den Punkt benutzen, sonst kann er es ja lassen.
Naja muss jeder selber wissen
Einen Kommentar schreiben:
-
Ein Gast antwortetequelle ist so ziemlich das einzige, wenn man so durchs netzt surft ...
das hat aber rein garnichts mit meiner aussage zu tun ... korrekt darstellen ... hm gut wer sagt, dass das so richtig ist .... ich kenns nur anderns und hab auch jetzt bei google nichts gefunden, dass dagegen spricht ... nur, dass das komma in viele europäischen (deutschland ist da irgendwo) typografisch richtig ist ...
nur weil quelle das nimmt (und auch nur auf der website), ist für mich noch lange kein argument ...
Einen Kommentar schreiben:
Einen Kommentar schreiben: