Donc @Pascale : à 0.2 prés tu es bon, mais je demande la troncature à 0.001 prés.
Arbre a écrit:1/Comment calculer cos(1) et sin(1) avec cette précision.
2/Comment faire le calcul pour ne pas perdre la précision et ne pas être dépassé par la taille des nombres à gérer.
.@aviateur : pour montrer que la précision suffisait, j'ai changé la précision pour vérifier la stabilité du résultat, le système étant cahotique c'est stabilité m'assure que j'ai la bonne valeur
{
int n=0;
BigInteger a = BigInteger.Parse("314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872");
a =BigInteger.Multiply(a, 2);
// a contient les 618 décimales de 2pi
BigInteger b = BigInteger.Pow(2, 2017);
b = BigInteger.Multiply(b, 1000000000000000);
BigInteger c;
// b contient 2^2017 plus dix zeros pour à la fin revenir à 10 ch après la virgule
while (BigInteger.Compare(b, 10000000000000000) >= 0)
{
c = BigInteger.Subtract(b, a);
while (BigInteger.Compare(c, 0) >= 0)
{
b = c;
c = BigInteger.Subtract(b, a);
n = n + 1;
}
a = BigInteger.Divide(a, 10);
}
textBox1.Text = b.ToString("N");
textBox2.Text = n.ToString();
}Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :