Jörg Reinholz: Vor dem Komma alles streichen

Beitrag lesen

Moin!

@@Matthias Apsel

Brauchst du die Zahl ‚34‘?

0.34 ergibt 34, aber 0.3 ergibt 3?

Das denke ich, war nicht gemeint:

Ausgangswerte:

0.34 / 0.3 / 1.3

Ziel: "Alles vor dem Komma alles streichen":

.34 / .3 / 1.3

Ich denke nämlich und Hilfe der Kristallkugel, "Sabi" meint tatsächlich die führenden Nullen und ergänze das mal durch "auch nachfolgende Nullen":

<?php
$n=0.34;
$s=preg_replace('/0+$/','', preg_replace ('/^0/', '', sprintf('%f', $n)));
echo $s, "\n";

Von innen nach außen:

  1. sprintf('%f', 0.34) macht aus der Zahl 0.34 den String '0.34000'.
  2. preg_replace ('/^0/', '', '0.34000') entfernt die führende Null: '.34000'
  3. preg_replace ('/0+$/', '', '.34000') entfernt die hinten anhängenden Nullen: '.34'

Anders (besser, schlanker) formuliert:

<?php
$n=0.34;
$ar[]='/0+$/'; # Nullen hinten
$ar[]='/^0/';  # eine Null vorn
$s=preg_replace($ar, '', sprintf('%f', $n));
echo $s, "\n";

als Funktion:

<?php
function numToShortString($n) {
  return preg_replace(array ('/0+$/', '/^0/'), '', sprintf('%f', $n));
}

echo numToShortString(0.34), "\n";
echo numToShortString(0.3), "\n";
echo numToShortString(1.3), "\n";

Ergebnisse:

.34
.3
1.3

Jörg Reinholz