PHP 的崛起
好吧,我需要在 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。
有什么建议么?
Well, i need to do some calculations in PHP script. And i have one expression that behaves wrong.
echo 10^(-.01);
Outputs 10
echo 1 / (10^(.01));
Outputs 0
echo bcpow('10', '-0.01') . '<br/>';
Outputs 1
echo bcdiv('1', bcpow('10', '0.01'));
Outputs 1.000....
I'm using bcscale(100)
for BCMath calculations.
Excel and Wolfram Mathematica give answer ~0,977237.
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
插入符号是 PHP 中的按位 XOR 运算符。 您需要使用
pow()
来表示整数。The caret is the bit-wise XOR operator in PHP. You need to use
pow()
for integers.PHP 5.6 最终引入了一个固有的幂运算符,用双星号 (
**
) 表示 - 不要与按位异或运算符^
混淆。5.6之前:
5.6及以上:
还可以使用赋值运算符:
通过多次讨论和投票,决定该运算符是右结合的(不是左结合的),并且其运算符优先级高于按位非运算符 (
~
)。另外,由于某种对我来说没有多大意义的原因,幂是在否定一元运算符(
-
)之前计算的,因此:PHP 5.6 finally introduced an innate power operator, notated by a double asterisk (
**
) - not to be confused with^
, the bitwise XOR operator.Before 5.6:
5.6 and above:
An assignment operator is also available:
Through many discussions and voting, it was decided that the operator would be right-associative (not left) and its operator precedence is above the bitwise not operator (
~
).Also, for some reason that does not make much sense to me, the power is calculated before the negating unary operator (
-
), thus:^
运算符是按位异或运算符< /a>. 您必须使用pow
、bcpow
或gmp_pow
:The
^
operator is the bitwise XOR operator. You have to use eitherpow
,bcpow
orgmp_pow
:bcpow 函数 仅支持整数指数。 尝试使用 pow 代替。
The bcpow function only supports integer exponents. Try using pow instead.
截至 2014 年,PHP 5.6 alpha 更新中包含了很多功能,我希望这些功能能够出现在 PHP 的最终版本中。 它是
**
运算符。因此,您可以执行
2 ** 8
得到256
。 PHP 文档说:“添加了右关联**
运算符以支持求幂”。As of 2014, and the PHP 5.6 alpha update, there's a much included feature that I hope makes it to the final release of PHP. It's the
**
operator.So you can do
2 ** 8
will get you256
. PHP Docs say: "A right associative**
operator has been added to support exponentiation".