[英]Floating point precision issue in PHP and MySQL for storing occasional decimal values
[英]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数学函数来执行这样的方程式?
并不是真正的方程式,而是语义。 另外,我怀疑您的意思是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.