我有以下等式
1 - ((。5 * 0.83333333333333)^ 2 +(。5 * 0.83333333333333)^ 2 +(。* *(1 - 0.83333333333333))^ 2 +(。* *(1 - 0.83333333333333))^ 2)
在Php5中,这导致答案为1而不是.63(在两台机器上,OSx和Centos)。我应该专门使用Php的bc数学函数来做这样的方程吗?
答案 0 :(得分:5)
我想也许你应该使用pow()而不是xor operator (^):)
答案 1 :(得分:1)
不是一个等式,而是那个语义。另外,我怀疑你的意思是xor,所以我认为这不是你想要的。无论如何,你能使用理性算术吗?
0.83333可以转换为分数(假设3是重复小数):
83.3333333 = 100x
8.3333333 = 10x
-----------------
75 = 90x
x = 75 / 90 = 0.83333...
这样你只处理整数,只要两者都没有溢出(你可以在操作之前和之后通过GCD减少)那么你应该没事。
答案 2 :(得分:1)
<?php
$hugeDamnEquation = pow(1 - ((.5 * 0.83333333333333), 2) + pow((.5 * 0.83333333333333), 2) + pow((.5 * (1 - 0.83333333333333)), 2) + pow((.5 * (1 - 0.83333333333333)), 2));
echo $hugeDamnEquation;
?>