下面的代碼添加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