Archiv verlassen und diese Seite im Standarddesign anzeigen : Nachkommastellen
Marilu
23.11.2005, 12:45:46
Moin,
habe bei der Suche hier zwar einiges gefunden, aber nicht das Richtige. Ich möchte Zahlen, die als decimals (10,3) in meiner Tabelle gespeichert sind, ohne nachfolgende Nullen ausgeben, also:
100.120 -> 100.12
110.200 -> 110.2
120.000 -> 120
Hat jemand einen guten Tip, wie ich das am einfachsten lösen kann?
Thx, Marilu
feuervogel
23.11.2005, 18:55:25
willst du sie schon direkt aus der datenbank formatiert auslesen oder erst im php umwandeln?
feuervogel
23.11.2005, 19:19:06
falls im php:
<?php
$z = number_format( 123.12 , 3 );
echo nullenweg( $z , 3 );
function nullenweg( $zahl , $nachkommastellen ) {
$z = $zahl * pow( 10 , $nachkommastellen );
for( $i = 0; $i < $nachkommastellen; $i++ ) {
if( $z % 10 == 0 ) {
$z /= 10;
} else {
break;
}
}
return number_format( $zahl , $nachkommastellen - $i );
}
?>
getestet und für gut befunden ;-)
Marilu
23.11.2005, 20:10:57
@feuervogel
> falls im php:
Genau da. Interessante Funktion, haut hin.
Danke, Greetz Marilu
feuervogel
23.11.2005, 20:31:50
@feuervogel
> falls im php:
Genau da. Interessante Funktion, haut hin.
Danke, Greetz Marilu
interessant? naja, was man sich halt so aus den fingern saugt *g* freut mich, dass es das richtige ist.
xabbuh
23.11.2005, 21:20:47
Mit diesem regulärem Ausdruck finde ich es einfacher (wenn auch vermutlich nicht schneller):
<?php
$regex = '#^(\d+(?:\.\d*?)0*)$#';
$var = preg_replace($regex, $1, $var);
?>
meikel (†)
24.11.2005, 02:46:17
Ich möchte Zahlen, die als decimals (10,3) in meiner Tabelle gespeichert sind, ohne nachfolgende Nullen ausgeben, also:
Hat jemand einen guten Tip, wie ich das am einfachsten lösen kann?
zB. so:
$a = 120.000;
$a += 0;
echo $a;
Einfach das automatische Typecasting ausnutzen.
feuervogel
24.11.2005, 02:47:19
zumal
$z = number_format( 123.12 , 3 );
$regex = '#^(\d+(?:\.\d*?)0*)$#';
$var = preg_replace($regex, "$1", $z);
echo $var;
als ausgabe das hier produziert:
123.120
wenn ich die " um das $1 weglasse, gibts nen error.
Marilu
24.11.2005, 14:52:23
@all
Danke für Eure Hilfe. Mittlerweile präferiere ich die Lösung von meikel, da ich die von xabbuh sowieso nicht verstehe, und sie gegenüber der mathematisch etwas anspruchsvolleren von feuervogel nur einen Parameter braucht. Hätte nicht gedacht, dass es so einfach ist.
Greetz, Marilu
|Coding
24.11.2005, 18:01:56
$a = 120.000;
$a += 0;
echo $a;
"$a += 0;" ist hier nicht einmal von Nöten.
$a = 120.000;
echo $a;
Tuts auch.
feuervogel
24.11.2005, 21:19:45
"$a += 0;" ist hier nicht einmal von Nöten.
$a = 120.000;
echo $a;
Tuts auch.
wenn es so einfach wäre, wieso fragt er dann nach der umwandlung?
zumal
$a = number_format( 120 , 3 ); echo $a;
eben nicht so funktioniert, wie du vorschlägst.
$a = 120.000;
echo $a;
wieso number_format?
|Coding
24.11.2005, 21:43:04
$a = number_format( 120 , 3 ); echo $a;
eben nicht so funktioniert, wie du vorschlägst.
Ich hatte nichts vorgeschlagen, sondern nur den Beitrag von meikel kommentiert, weil der obige Code bei von meikel mit Integer-Werten auch so funktioniert wie es mein Kommentar aufzeigt. Zum anderen kann das auch logischerweise so nicht klappen, wenn mit Strings gearbeitet wird, so wie number_format die Werte nun Mal returned.
feuervogel
24.11.2005, 21:56:16
ah, deswegen klappt hingegen auch
$a = number_format( 120 , 3 );$a += 0; echo $a;
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.