2016-08-09 3 views
4

Ich habe diese Situation:PHP Zahl mehr als 10 Dezimalstellen

$a = (double)"8.876543456787654"; 
echo json_encode(["value" => $a]); 

Es ist diese Rückkehr:

{"value":8.8765434567877} 

Und das nicht, was die wünschenswert ist:

{"value":8.876543456787654} 

Hinweis dass ich das nicht haben kann:

{"value":"8.876543456787654"} 

Wie kann ich diese Genauigkeit ändern und die Rundung abbrechen?

+1

Die Standardgenauigkeit 14 oder 16 Jahre alt sein soll, kann es in der php.ini geändert werden. –

+1

Lesen Sie diese http://php.net/manual/de/language.types.float.php –

+0

Auch die Verwendung der BCMath-Erweiterung macht Operationen auf diesen Zahlen genauer: http://php.net/manual/en/book .bc.php –

Antwort

5

Set Präzision höher zur Laufzeit

ini_set("precision", "16");

auch verwenden (float) statt (double)

+0

Arent Float und doppelt so viel in PHP? –

+1

Vielleicht ist es nur meine Gewohnheit, '(float)' zu verwenden und ich kann bestätigen, dass es funktioniert. –

+1

Ich habe diese Nachricht: 'ini_set() wurde aus Sicherheitsgründen deaktiviert. Ich testete PHP 5.4, 5.6 und 7 :(... Und ich wechselte zu float ... :) –

Verwandte Themen