【问题标题】:Convert float to string in php?在php中将float转换为字符串?
【发布时间】:2011-10-16 03:23:24
【问题描述】:

喜欢:

浮点数(1.2345678901235E+19) => 字符串(20) "12345678901234567890"

可以吗?

(用于 json_decode...)

【问题讨论】:

    标签: php string floating-point type-conversion


    【解决方案1】:
    echo number_format($float,0,'.','');
    

    注意:这是整数,小数加0

    【讨论】:

    • 如果你想有一个最大的小数位数,这是一个很好的解决方案。根据这个问题,我会将上面的内容更改为echo number_format($float,10,'.','');,最多保留 10 位小数。 (任意,但我很确定它应该高于 0)。
    • 我得到的json值不是float,它是一个非常大的整数,比如23453453245324532453253425。但是它被json_decode转换为float。你的解决方案总是能得到原始的 json 值吗? :)(它似乎适用于我现在拥有的数据)
    • 浮点数的精度有限,一旦你的整数足够大,它就不起作用了。应该适用于大约 14 位数字。除此之外,它可能会起作用,但可能是纯粹的运气。
    • 该值现在有 17 个数字。你知道它什么时候会停止精确转换浮点数吗?
    • 你可以在函数调用中更改设置,看我的回答。
    【解决方案2】:
    $float = 0.123;
    $string = sprintf("%.3f", $float); // $string = "0.123";
    

    【讨论】:

      【解决方案3】:

      原来json_decode 默认将大整数转换为浮点数。这个选项可以在函数调用中被覆盖:

      $json_array = json_decode($json_string, , , 1);
      

      我只是基于主要文档,所以请测试并告诉我它是否有效。

      【讨论】:

      • 这是我尝试的第一件事 - JSON_BIGINT_AS_STRING,我得到:json_decode 最多需要 3 个参数 bla bla ... 和一个未定义的常量消息
      • 哈!我刚刚测试过,我得到了同样的错误,但“预计最多 2 个参数”。看起来在 5.3 中添加了第 3 个参数,在 5.4 中添加了第 4 个参数。因此,如果我们升级我们的 php,它会起作用。
      • 无论如何,它甚至不是有效的代码,你不能省略这样的参数。
      • 不能吗?它说我传入了 4 个参数……让我做一个测试。
      【解决方案4】:

      双精度浮点数只能包含大约 15 个有效数字。你能做的最好的就是用零填充多余的数字。

      【讨论】:

        【解决方案5】:

        我通过为options 参数传递参数JSON_BIGINT_AS_STRING 解决了这个问题。

        json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

        参见json_decode documentation 中的示例 #5

        【讨论】:

          【解决方案6】:

          在不丢失精度的情况下解码浮点数的唯一方法是遍历 json 并将所有浮点数用引号括起来。通过制作一串数字。

          PHP json_decode integers and floats to string

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-05
            相关资源
            最近更新 更多