我有一个类似
的json字符串{
"a":0.0000051,
"b":0.0000051,
"c":0.0000051,
"d":0.0000051
}
当我尝试将其解码为json_decode($json, true)
时,它将所有值转换为其指数编号为
array(4){
["a"]=> float(5.1E-6)
["b"]=> float(5.1E-6)
["c"]=> float(5.1E-6)
["d"]=> float(5.1E-6)
}
我想将json转换为十进制数具有相同值而不转换为指数的数组。
我该怎么做?
或者有没有其他方法可以将这些数字转换回十进制数?
答案 0 :(得分:0)
首先将json数据存储在变量中,假设为$json
然后尝试这个
$result = preg_replace("/(\"\w+\":\s*?)(\d+\.?[^,\}]*\b)/imu",'$1"$2"',$json);
print_r($result);
答案 1 :(得分:0)
由于您使用的是PHP loosely typed language,因此您可以将浮点值存储为json中的字符串值:
{
"a": "0.0000051",
"b": "0.0000051",
"c": "0.0000051",
"d": "0.0000051"
}
在阅读你的json时,你可以使用下面的代码片段将字符串值转换为浮点数:
$a_float = (float) $a;
因为你想将json转换为一个数组,该数组在十进制数中具有相同的值而不转换为指数表示法,我认为这是要走的路。
答案 2 :(得分:0)
让我们试试这个:
KafkaConsumer
用法
ListOffsetRequest
结果:
function float_to_string($data) {
if (is_array($data)) {
foreach ($data as $key => $value) {
$data[$key] = float_to_string($value);
}
return $data;
} else {
if (is_float($data)) {
$result = rtrim(number_format($data, 14), '0.');
return $result === '' ? '0' : $result;
} else {
return $data;
}
}
}