2008-11-12 4 views
0

У меня следующее уравнениеPhp точность, с плавающей точкой - комплексного уравнения = 1

1 - ((0,5 * +0,83333333333333)^2 + (0,5 * +0,83333333333333)^2 + (0,5 * (1 - +0,83333333333333))^2 + (0,5 * (1 - 0,83333333333333))^2)

в pHP5, это приводит к ответу 1, в отличие от .63 (на двух машинах, OSX и Centos). Должен ли я использовать исключительно математические функции bc для Php, чтобы делать подобные уравнения?

ответ

1

действительно не уравнение, но то семантика. Кроме того, я сомневаюсь, что вы имеете в виду xor, поэтому я предполагаю, что это не то, что вы хотите. В любом случае, можете ли вы использовать рациональную арифметику?

0,83333 может быть преобразован в фракцию (при условии, 3 является повторяющимся десятичным):

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

Таким образом, вы имеете дело с целыми числами только, и до тех пор, как оба не переполнения (вы можете уменьшить по GCD до и после операций), тогда вы должны быть в порядке.

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; 

?> 
Смежные вопросы