PHP获取JSON中的BTC价格出现科学计数法如何输出正常小数
解决方案
出现科学计数法是PHP浮点数的默认输出逻辑:当数值的绝对值小于0.0001时,会自动转为科学计数法展示,通过数值格式化函数即可输出你需要的普通小数格式,可选择以下任意一种方案修改:
方案1:使用
number_format指定保留小数位数
直接替换原有echo $json->BTC;代码即可,8位小数完全覆盖BTC汇率的精度需求:// 不需要去除末尾多余0的话直接使用 number_format($json->BTC, 8) 即可 echo rtrim(rtrim(number_format($json->BTC, 8), '0'), '.');方案2:使用
sprintf格式化输出
实现效果和number_format一致:echo rtrim(rtrim(sprintf('%.8f', $json->BTC), '0'), '.');方案3:高精度场景使用BC数学函数
对精度要求较高、需要避免浮点数运算误差的场景可使用BC系列函数处理:echo rtrim(rtrim(bcadd($json->BTC, 0, 8), '0'), '.');
修改后完整代码示例
<?php $url = "https://min-api.cryptocompare.com/data/price?fsym=USD&tsyms=BTC"; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 120, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Cache-Control: no-cache", ), )); $response = curl_exec($curl); $err = curl_error($curl); $json = json_decode($response); // 格式化后输出 echo rtrim(rtrim(number_format($json->BTC, 8), '0'), '.'); curl_close($curl);
内容的提问来源于stack exchange,提问作者onuwa3
相关产品推荐
相关产品推荐

