gpt4 book ai didi

php - json_decode 将长数转换为科学记数法

转载 作者:行者123 更新时间:2023-12-04 10:07:04 25 4
gpt4 key购买 nike

我返回了这个 RAW JSON,当我应用 json_decode 以数组形式访问数据时,它会将 trackingNumber 转换为科学记数法。有没有什么可能的方法可以避免这种情况而不会影响/舍入整数,或者我可以在不解码的情况下遍历 RAW JSON?我尝试更改精度并使用 number_format 对其进行格式化,并且两者都在一定程度上起作用。但是,整数中间的数字发生了一些变化,就像四舍五入一样。

原始 JSON 数据:

{
"data": {
"shipments": [
{
"packages": [
{
"responseDetails": {
"trackingNumber": 420217949361269903504794752430
}
}
]
}
]
}
}

当涉及 json_decode 时:
{
"data": {
"shipments": [
{
"packages": [
{
"responseDetails": {
"trackingNumber": 4.202179493612699e+29,
}
}
]
}
]
}
}

改变精度:
<?php
ini_set('precision', 30);
$trackingNumber = 4.202179493612699e+29;
print $trackingNumber;

// Displays: 420217949361269887002807894016
?>

使用 number_format():
<?php
$trackingNumber = number_format(4.202179493612699e+29, 0, '.', '');
print $trackingNumber;

// Displays: 420217949361269887002807894016
?>

最佳答案

这是因为默认情况下大数字被转换为 float这损害了他们的精确度。

json_decode() 第四个参数允许您设置解码选项。您可以使用选项 JSON_BIGINT_AS_STRING 强制转换为 string而不是 float .我想您不需要对数字进行任何计算,因此使用字符串应该没问题。

整个函数调用可能如下所示:

$result = json_decode($jsonString, false, 512, JSON_BIGINT_AS_STRING);

关于php - json_decode 将长数转换为科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61531576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com