Convert float to string in php?

前端 未结 6 1840
予麋鹿
予麋鹿 2021-02-18 13:01

Like:

float(1.2345678901235E+19) => string(20) \"12345678901234567890\"

Can it be done?

(it\'s for json_decode...)

相关标签:
6条回答
  • 2021-02-18 13:30

    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

    0 讨论(0)
  • 2021-02-18 13:32

    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.

    0 讨论(0)
  • 2021-02-18 13:33
    $float = 0.123;
    $string = sprintf("%.3f", $float); // $string = "0.123";
    
    0 讨论(0)
  • 2021-02-18 13:34

    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.

    0 讨论(0)
  • 2021-02-18 13:48
    echo number_format($float,0,'.','');
    

    note: this is for integers, increase 0 for extra fractional digits

    0 讨论(0)
  • 2021-02-18 13:48

    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.

    PHP json_decode integers and floats to string

    0 讨论(0)
提交回复
热议问题