Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Zahl nach 2 Nachkommastellen abschneiden,aber nicht runden!

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114

    Zahl nach 2 Nachkommastellen abschneiden,aber nicht runden!

    Hi,
    bin auf der Suche nach einer Funktion, die eine Zahl z.B. 17,126456 nach der 2. Nachkommastelle abschneidet, aber ohne zu runden!
    Also sollte ich 17,12 bekommen.
    Ich hab schon sprintf, printf, number_format usw. ausprobiert, aber die runden alle.

    Muss ich mir da selbst eine Funktion schreiben, die die Zahl einfach abschneidet - also nen String bearbeiten? oder gibts dafür doch irgendwo ne Funktion, die mir entgangen ist?

    Danke für Eure Hilfe
    Andi
    Geändert von Andislack (16-09-2004 um 01:22 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Hi,

    auf die Schnelle habe ich dir Funktion nicht gefunden. Aber eine andere Lösung die auch geht ist folgende
    PHP-Code:
    $erg floor($val 100) / 100
    Da brauch man keine ganze Funktion für.

    Mehr dazu im Manual: floor()

    Pingu

    EDIT: Wenn Du natürlich unbedingt eine Funktion schreiben möchtest, kannst Du natürlich ganz schnell eine allgemeine Lösung haben:
    PHP-Code:
    function floor2($val$precision) {
        
    $precision = ($precision 0) ? $precision;
        return 
    floor($val pow(10$precision)) / pow(10$precision);

    Ein anderer Ansatz wäre:
    PHP-Code:
    function floor3($val$precision) {
        
    $precision = ($precision 0) ? $precision;
        return 
    round($val - (0.5 pow(10$precision)), $precision);

    Geändert von Pingu (16-09-2004 um 07:46 Uhr)

  3. #3
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Siehe noch einmal in der PHPManual sprintf() es macht genau das was du möchtest
    Wenn nicht Zeige bitte noch mal deinen Code zu sprintf()
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  4. #4
    Registrierter Benutzer
    Registriert seit
    26.03.2002
    Ort
    Berlin
    Beiträge
    114
    Hi,
    ich hab das Problem mittlerweile gelöst - war "nur" ein Fehler von mir, brauchte gar nicht die Zahl abschneiden...
    Aber mal zu Euren Vorschlägen:
    @pingu:
    Das mit floor funktioniert aber nur solange, wie $val ein double ist...ich hatte die ganze Zeit einen String und damit rundet floor() auf die nächste Ganzzahl ab...hätt ich daran mal gedacht...
    Die anderen beiden Funktionen tun ja im Prinzip das Gleiche - trotzdem gut zu wissen.

    @undefined:
    hab mit sprintf tausend Varianten ausprobiert, bin dann doch einstimmig mit mir zum Schluss gekommen, dass sprintf abschneidet aber vorher rundet.
    Wenn ich falsch liege, dann korrigier mich bitte und präsentier mir die Lösung.

    Ansonsten vielen Dank für Eure Hilfe.
    Gruss Andi

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •