8 Answers 8
echo number_format($float,0,'.','');
note: this is for integers, increase 0 for extra fractional digits
7 Comments
echo number_format($float,10,'.',''); giving it a max of 10 decimal places. (Arbitrary, but I'm pretty sure it should be higher than 0).$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";
Comments
It turns out json_decode by default casts large integers as floats. This option can be overwritten in the function call:
$json_array = json_decode($json_string, , , 1);
I'm basing this only on the main documentation, so please test and let me know if it works.
4 Comments
One funny way is to use json_encode()
json_encode($float, JSON_PRESERVE_ZERO_FRACTION)
Comments
I solved this issue by passing the argument JSON_BIGINT_AS_STRING for the options parameter.
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
See example #5 in the json_decode documentation
Comments
The only way to decode a float without losing precision is to go through the json and frame all the floats in quotation marks. By making strings of numbers.
Comments
I often use:
$v = float(1.2345678901235E+19);
$s = "{$v}";
Not sure if there may be any "gotcha's" associated but it generally works for me.
Comments
A double precision floating point number can only contain around 15 significant digits. The best you could do is pad the extra digits out with zeroes.
Comments
Explore related questions
See similar questions with these tags.