下面的代码添加64个数字:在32位Windows
$val = "209810563658809344";
echo sprintf('%0.0f', ($val - 1) + "<br />");
echo sprintf('%0.0f', (bcsub($val, 1)) + "<br />");
在windows 32位输出:
209810563658809344
209810563658809344
如何进行减法正常工作?
下面的代码添加64个数字:在32位Windows
$val = "209810563658809344";
echo sprintf('%0.0f', ($val - 1) + "<br />");
echo sprintf('%0.0f', (bcsub($val, 1)) + "<br />");
在windows 32位输出:
209810563658809344
209810563658809344
如何进行减法正常工作?
无论您的冲刺()掩蔽和级联使用+
代替.
迫使强制转换为数字类型
$val = "209810563658809344";
echo sprintf('%0.0f', ($val - 1)) . '<br />';
echo bcsub($val, 1) . '<br />';
这适用于该特定示例,但不适用于355325317306527744. – SoftwareAndOutsourcing
它的工作原理:http://3v4l.org/f8a1A – eisberg
它也适用于355325317306527744,请另行示范! –
避免转换为浮点,你会没事的。
$val = "20981056365880934";
echo bcmul($val, 2, 0)." ≈ ".bcdiv($val, 2, 0)." × 2 + ".bcsub($val, 1, 0)." + 1";
注意第三个尺度参数,它允许您控制精度像printf()
。见the bc manual
似乎我做错了什么,bcsub($ val,1)很好,谢谢! – SoftwareAndOutsourcing
你知道BC数学的,但再投以“%0.0F”的面具被铸造浮动输出回数... –
冲刺(),只不过是回应您的BC数学 –
阿尔瓦罗结果,你能解释一下吗?不使用printf只输出2.09810563659E + 17 – SoftwareAndOutsourcing