Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php json_解码和浮点值_Php_Json_Floating Point - Fatal编程技术网

Php json_解码和浮点值

Php json_解码和浮点值,php,json,floating-point,Php,Json,Floating Point,一位朋友问我一个简单的代码,从网站上获取值,没问题。 这个网站使用的是json API,同样,没有问题 但是,在解析结果之后,我发现值都错了 例如: json上的值是846.51,但我的脚本返回844.71 我当前的“代码”: 所以,我搜索了一下,发现它可能是一个与x64处理器相关的php错误,不确定 有什么解决办法吗?那么!据报道,这确实是一个php错误 以下是固定版本: $data = file_get_contents('https://blockchain.info/fr/ticker'

一位朋友问我一个简单的代码,从网站上获取值,没问题。 这个网站使用的是json API,同样,没有问题

但是,在解析结果之后,我发现值都错了

例如:

json上的值是846.51,但我的脚本返回844.71

我当前的“代码”:

所以,我搜索了一下,发现它可能是一个与x64处理器相关的php错误,不确定


有什么解决办法吗?

那么!据报道,这确实是一个php错误

以下是固定版本:

$data = file_get_contents('https://blockchain.info/fr/ticker');
$res = preg_replace( '/":(\d+)/', '":"\1"', $data );
$json = json_decode($res);

print_r($json->{'EUR'}->{'15m'});

改进John Konolol的答案:如果值是以sci格式表示的浮点数(“2.038069541E9”),则正则表达式将不起作用

正则表达式必须是:

preg_replace( '/":(\d+\.*\d*E*e*\d*)/', '":"\1"', $data)

它会将所有数字转换为字符串,包括浮点数(1.34)或sci格式的数字(1E3),这在Json中是有效的。

我在64x机器上,没有遇到这样的问题。你确定这是任何类型的错误,而不仅仅是更改数据或抓取错误的字段吗?“相关”列包含相关的问题,是的,我多次检查,json和json_解码的数字不一样,不知道为什么。json:“USD”:{“15m”:846.51,“last”:846.51,“buy”:842.03,“sell”:846.51,“symbol”:“$”}php:{“USD”:{“15m”:840.07,“last”:840.07,“buy”:840.04,“sell”:840.07,“symbol”:“$”}
preg_replace( '/":(\d+\.*\d*E*e*\d*)/', '":"\1"', $data)