所以我有这段代码
$pattern = array("/cash-equivalents_quarterly/" , "/total-assets_quarterly/");
$replace_data["cash-equivalents_quarterly"] = 169677928570;
$replace_data["total-assets_quarterly"] = 222617965672000000000;
$formula["1"] = " cash-equivalents_quarterly / total-assets_quarterly";
$amount1 = preg_replace($pattern,$replace_data,$formula["1"]);
return array( "replace_data" => $replace_data , "formula1" => $formula["1"] , "pattern" => $pattern , "amount1" => $amount1 );
我将amount1作为169677928570 / 2.22617965672E+20
。虽然我期待169677928570 / 222617965672000000000
这只发生在我执行ajax请求时,它会处理很多数据(foreach循环)后端。但是,如果我尝试单独运行这个简单的功能,它就不会发生。
我该如何解决这个问题?我想要普通数字而不是指数格式。
添加Javascript部分。它的角度
setFactory.submitFilterFormula($scope,function(results){
console.log(results);
});
factory.submitFilterFormula = function($scope,callback){
$scope.url = '/api/screener/submitFilterFormula';
// console.log($scope.post_data);
factory.doPostHttpRequest($scope).success(callback);
}
[![在此处输入图像说明] [1]] [1]
答案 0 :(得分:2)
原始问题使用字符串替换,当然,它没有任何问题。更新的问题也没有显示任何问题。
它是documented behaviour:在32位系统上可以在PHP中表示为整数的最大整数,在PHP 7之前的所有Windows系统上都略大于2,000,000,000(2147483647
更确切)。在64位系统上(Windows 5的PHP 5除外),可以表示为整数的最大值是2^63-1
(9223372036854775807
)。
将这些值转换为float
(double
实际上)的任何更大的内容。
total-assets_quarterly
的替换值大约是此限制的23倍。如果您不需要对它进行算术运算,那么在PHP中将其用作字符串以避免转换。