2008-11-12 14 views
0

je l'équation suivantePhp avec précision à virgule flottante - équation complexe = 1

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

en Php5, cela se traduit par une réponse de 1 par opposition à 0,63 (sur deux machines, OSx et CentOS). Devrais-je utiliser exclusivement les fonctions mathématiques de PHP de PHP pour faire des équations comme celle-ci?

Répondre

1

Pas vraiment une équation, mais c'est la sémantique. aussi, je doute que vous voulez dire xor, donc je suppose que ce n'est pas ce que vous voulez. De toute façon, pouvez-vous utiliser l'arithmétique rationnelle?

0,83333 peut être converti en une fraction (en supposant que le 3 est une répétition décimale):

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

De cette façon, vous faites affaire avec des nombres entiers seulement, et aussi longtemps que les deux ne débordent pas (vous pouvez réduire par GCD avant et après les opérations), alors ça devrait aller.

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; 

?>