2013-03-05 2 views
1

J'ai un code ici, et quand je les lance sur Win et Mac OS, la précision des résultats est différente, n'importe qui peut aider?exp() précision entre Mac OS et Windows

const double c = 1 - exp(-2.0); 
double x = (139 + 0.5)/2282.0; 
x = (1 - exp(-2 * (1 - x)))/c; 

Les résultats sont à la fois ,979645005277687, mais Hex sont différentes:

Win: 3FEF59407B6B6FF1 
Mac: 3FEF59407B6B6FF2 

Comment puis-je obtenir le même résultat.

+0

"Implémentations légèrement différentes?" –

+0

Je ne pense pas que vous le puissiez - la différence est inhérente à la façon dont les deux plates-formes implémentent les calculs de FP. –

+0

@roger_rowland Même si les deux fonctionnaient sur le même processeur/FPU? Autrement dit, pourquoi la * plateforme * serait-elle intrinsèquement différente? –

Répondre

1

Comment puis-je obtenir le même résultat.

À moins que la bibliothèque mathématique sur OS X utilise la même mise en œuvre/algorithme de calcul e^x, vous ne serez pas et ne peut pas vraiment obtenir exactement les mêmes résultats. Les calculs à virgule flottante ne sont pas exacts, traitez-les.

+0

En fait, j'utilise pow (M_E, n) et j'obtiens le même résultat, mais parfois la précision de pow() est différente non plus. Donc, la précision est toujours moi. –

+0

@RyanZheng Oui, 'pow()' a aussi différentes implémentations. –

Questions connexes