我对BIG数字有一个小问题,其中BC Maths函数bcdiv
总是在非零结果上返回零。
例如:
echo bcdiv(40075036, 86164.098903691, 40);
与传统方法相比:
echo (40075036/86164.098903691);
我不确定为什么会有这种差异。 BC Math函数只是否可以处理字符串,如果是这样,我怎样才能将int值转换为字符串(优先使用内联符号,如(int)$myvar;
)---如果这是问题
答案 0 :(得分:1)
该问题的解决方案如下:
bcmath 操作仅适用于字符串。您不能将任何其他类型的数据作为参数传递,因为它不会进行任何计算,除非值是(字符串)。
如果传递其他数据类型,这组函数不会自动将数据转换或转换为字符串, NO ERROR将被返回。
要传递存储在整数,浮点数等中的数据,以下代码将根据需要动态转换变量数据:
bcdiv((string)40075036, (string)86164.098903691, (string)40);
OR
$num1 = 12345;
$num2 = 45678;
$digits = 40;
bcdiv((string)$num1, (string)$num2, (string)$digits);
如果数字是固定的并且在您通过之前已知(也就是说,它们不是来自数据库,并且未预先计算),那么您应该使用以下函数:
bcdiv('40075036', '86164.098903691', '40');
答案 1 :(得分:0)
使用“bcscale”功能 - 为所有bc数学函数设置默认比例参数。 例:
bcscale(40);
echo bcdiv(40075036, 86164.098903691);
它对我有用。 (php 7.1)