好吧,我需要在PHP脚本中做一些计算。我有一个行为错误的表达。

echo 10^(-.01);

输出10

echo 1 / (10^(.01));

输出0

echo bcpow('10', '-0.01') . '<br/>';

输出1

echo bcdiv('1', bcpow('10', '0.01'));

输出1.000 ....

我正在使用 bcscale(100)进行BCMath计算。

Excel和Wolfram Mathematica给出答案〜0,977237。

有什么建议吗?

有帮助吗?

解决方案

插入符号是PHP中的一点点 XOR操作符。您需要使用 pow() 来表示整数。

其他提示

PHP 5.6最终引入了一个固有的幂运算符,用双星号( ** )表示 - 不要与按位XOR运算符 ^ 混淆。

在5.6之前:

$power = pow(2, 3);  // 8

5.6及以上:

$power = 2 ** 3;

也可以使用赋值运算符:

$power   = 2 ** 2;
$power **=      2;  // 8

通过许多讨论和投票,决定运算符是右关联的(不是左),其运算符优先级高于按位非运算符 )。

$a = 2 **  3 ** 2;  // 512, not 64 because of right-associativity
$a = 2 ** (3 ** 2); // 512

$b = 5 - 3 ** 3;    // -22 (power calculated before subtraction)

另外,由于某种原因对我来说没有多大意义,权力是在否定一元运算符 - )之前计算的,因此:

$b = -2 ** 2;        // -4, same as writing -(2 ** 2) and not 4

^ 运算符是按位的XOR运算符。您必须使用 pow bcpow <代码> gmp_pow

var_dump(pow(10, -0.01));  // float(0.977237220956)

bcpow功能仅支持整数指数。请尝试使用 pow

截至2014年,以及PHP 5.6 alpha更新,我希望它能够在PHP的最终版本中实现。它是 ** 运算符。

所以你可以做 2 ** 8 会得到 256 。 PHP Docs说:“添加了一个右关联 ** 运算符以支持取幂”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top