在php中将浮点数转换为字符串?

问题描述 投票:0回答:7

喜欢:

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

可以做吗?

(用于 json_decode...)

php string floating-point type-conversion
7个回答
56
投票
echo number_format($float,0,'.','');

注意:这是针对整数的,对于额外的小数位增加 0


20
投票
$float = 0.123;
$string = sprintf("%.3f", $float); // $string = "0.123";

2
投票

事实证明

json_decode
默认情况下将大整数转换为浮点数。该选项可以在函数调用中被覆盖:

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

我仅基于主要文档,因此请测试并告诉我它是否有效。


0
投票

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


0
投票

我通过为

JSON_BIGINT_AS_STRING
参数传递参数
options
解决了这个问题。

json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

请参阅 json_decode 文档中的示例 #5


0
投票

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

PHP json_decode 整数和浮点数为字符串


0
投票

我经常使用:

$v = float(1.2345678901235E+19);
$s = "{$v}";

不确定是否有任何相关的“陷阱”,但它通常对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.