0

我有以下等式

1 - ((.5 * 0.83333333333333) ^ 2 + (.5 * 0.83333333333333) ^ 2 + (.5 * (1 - 0.83333333333333)) ^ 2 + (.5 * (1 - 0.83333333333333)) ^ 2)

在 Php5 中,这导致答案为 1 而不是 0.63(在两台机器上,OSx 和 Centos)。我应该专门使用 Php 的 bc 数学函数来做这样的方程吗?

4

3 回答 3

5

我想也许你应该使用pow()而不是xor 运算符 (^) :)

于 2008-11-12T18:14:21.900 回答
1

不是真正的方程式,而是语义。另外,我怀疑你的意思是异或,所以我认为这不是你想要的。无论如何,你能用有理算术吗?

0.83333 可以转换为分数(假设 3 是重复小数):

 83.3333333 = 100x
  8.3333333 = 10x
 -----------------
         75 = 90x
     x = 75 / 90 = 0.83333...

这样你只处理整数,只要两者都没有溢出(你可以在操作之前和之后通过 GCD 减少),那么你应该没问题。

于 2008-11-12T18:18:09.397 回答
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;

?>
于 2008-11-12T18:27:20.533 回答