繁体   English   中英

带有浮点的php精度-复数方程= 1

[英]Php precision with floating point - complex equation = 1

我有以下等式

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)。 我是否应该仅使用Phb的bc数学函数来执行这样的方程式?

我认为也许您应该使用pow()而不是xor运算符(^) :)

并不是真正的方程式,而是语义。 另外,我怀疑您的意思是xor,所以我认为那不是您想要的。 无论如何,您可以使用有理算术吗?

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

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

这样,您只处理整数,只要两个都不会溢出(可以在操作之前和之后通过GCD减少),就可以了。

<?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;

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM