Je me demande comment les calculatrices fonctionnent avec précision. Par exemple, la valeur de sin(M_PI)
n'est pas exactement zéro lorsque calculé double
précision:Comment les calculatrices fonctionnent-elles avec précision?
#include <math.h>
#include <stdio.h>
int main() {
double x = sin(M_PI);
printf("%.20f\n", x); // 0.00000000000000012246
return 0;
}
Maintenant, je voudrais certainement imprimer zéro lorsque l'utilisateur entre dans le péché (π). Je peux facilement tourner quelque part sur 1e-15 pour faire fonctionner ce cas particulier, mais c'est un hack, pas une solution. Quand je commence à tourner comme ça et que l'utilisateur entre quelque chose comme 1e-20, ils obtiennent un zéro retour (à cause de l'arrondi). La même chose se produit lorsque l'utilisateur entre 1/10 et frappe la touche = à plusieurs reprises - quand il atteint le seuil d'arrondi, il obtient zéro.
Et pourtant, certaines calculatrices retournent zéro pour sin (π) et en même temps, ils peuvent travailler avec des expressions telles que (1e-20)/10 confortablement. Où est l'astuce?
De quelles calculatrices parlez-vous? –
Par exemple, la calculatrice fournie avec les iPods et les iPhones. – zoul