数字非常小的 bcmath 运算
bcmath operations with very small numbers
我想使用 bcmath 对非常小的数字进行精确运算,但它失败了。我正在尝试计算加密货币价格并认为 bcmath 比将浮点数转换为整数更好
这个工作:
php > echo number_format(0.000005 * 0.0025, 10);
0.0000000125
这不起作用:
php > echo number_format(bcmul(0.000005, 0.0025, 10), 10);
0.0000000000
php > echo number_format(bcadd(0.000005, 0.00000025, 10), 10);
0.0000000000
bcmath 是否有一些配置或者这是正常行为?
您需要将 bc* 函数参数作为字符串传递。否则,它们将被解释为本机浮动并受其限制。
echo bcmul('0.000005', '0.0025', 10), "\n";
echo number_format(bcmul('0.000005', '0.0025', 10), 10), "\n";
输出:
0.0000000125
0.0000000125
我想使用 bcmath 对非常小的数字进行精确运算,但它失败了。我正在尝试计算加密货币价格并认为 bcmath 比将浮点数转换为整数更好
这个工作:
php > echo number_format(0.000005 * 0.0025, 10);
0.0000000125
这不起作用:
php > echo number_format(bcmul(0.000005, 0.0025, 10), 10);
0.0000000000
php > echo number_format(bcadd(0.000005, 0.00000025, 10), 10);
0.0000000000
bcmath 是否有一些配置或者这是正常行为?
您需要将 bc* 函数参数作为字符串传递。否则,它们将被解释为本机浮动并受其限制。
echo bcmul('0.000005', '0.0025', 10), "\n";
echo number_format(bcmul('0.000005', '0.0025', 10), 10), "\n";
输出:
0.0000000125
0.0000000125