Frage

Wenn ich einige meiner doppelten Variablen ausgibt sie in exponentieller Form geschrieben werden Fwrite verwenden. Kann ich einige Standardwerte in PHP, wo, wenn eine Variable (kopiert oder gespeichert) passiert es immer im Dezimalformat angezeigt wird?

Um genau zu sein, wenn das Problem auftritt, das i json_decode Methode auf einem json Zeichenfolge verwendet werden, die einen doppelten Wert enthält (die nicht in exponentieller Form ist). Der Double-Wert nach einer Umwandlung ein Objekt wird exponentiell.

War es hilfreich?

Lösung

Unter der Annahme sind die Zahlen immer noch schwimmt, wenn geschrieben wird (im Gegensatz zu Strings gegen), ist dies eine Möglichkeit, es zu tun:

echo rtrim(sprintf("%0.15f", $x), "0.");

Ich bin mir nicht sicher, ob es ein sauberer Weg ist oder nicht. Aber im Grunde sprintf Diese nutzt maximal 15 Dezimalstellen zu drucken, und dann trimmt weg alle nachgestellten 0 oder . Zeichen. (Natürlich gibt es keine Garantie, dass alles schön abgerundet wird mit Nullen wie man erwarten könnte.)

Wenn Sie nur eine feste Größe wünschen, dann können Sie die 15 einzustellen und die rtrim entfernen.

Andere Tipps

Ich hatte ein ähnliches Problem, wo json_decode kürzlich wurde die Umwandlung twitter / tweet IDs in exponentielle Zahlen.

Ich löste es durch PHP float Präzision Upping, die eine andere paar Möglichkeiten getan werden kann ...

  • den precision Wert in der php.ini finden und verändern precision = 20
  • Add ini_set('precision', 20); auf Ihre PHP-Anwendung
  • Add php_value precision 20 zu Ihren App .htaccess oder virtueller Host-Datei

Ansonsten, wenn Sie in Ordnung Ihre BIGINT mit mit in einen String konvertiert und Sie haben PHP 5.3+ Sie auch ein Flag zu json_decode wie so passieren kann: json_decode($json, true, 512, JSON_BIGINT_AS_STRING)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top