Kur*_*aze 3 php math bcmath exponent exponentiation
好吧,我需要在PHP脚本中做一些计算.我有一个行为错误的表达.
echo 10^(-.01);
Run Code Online (Sandbox Code Playgroud)
产出10
echo 1 / (10^(.01));
Run Code Online (Sandbox Code Playgroud)
输出0
echo bcpow('10', '-0.01') . '<br/>';
Run Code Online (Sandbox Code Playgroud)
输出1
echo bcdiv('1', bcpow('10', '0.01'));
Run Code Online (Sandbox Code Playgroud)
输出1.000 ....
我bcscale(100)用于BCMath计算.
Excel和Wolfram Mathematica给出答案~0,977237.
有什么建议?
PHP 5.6最终引入了一个先天的幂运算符,用双星号(**)表示 - 不要与^按位XOR运算符混淆.
在5.6之前:
$power = pow(2, 3); // 8
Run Code Online (Sandbox Code Playgroud)
5.6及以上:
$power = 2 ** 3;
Run Code Online (Sandbox Code Playgroud)
赋值运算符也可用:
$power = 2 ** 2;
$power **= 2; // 8
Run Code Online (Sandbox Code Playgroud)
通过许多讨论和投票,决定运算符是右关联的(不是左),其运算符优先级高于按位非运算符(~).
$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)
Run Code Online (Sandbox Code Playgroud)
此外,由于某些原因对我来说没有多大意义,因此在否定一元运算符(-)之前计算幂,因此:
$b = -2 ** 2; // -4, same as writing -(2 ** 2) and not 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9332 次 |
| 最近记录: |