Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Merci d'avance.
ZarkXe
---------------%<-------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
double total3 = pow(10, 16) + 1 - pow(10, 16);
printf("pow(16) + 1 - pow(16) = %lfn", total3);
return EXIT_SUCCESS;
}
---------------%<-------------
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Merci d'avance.
ZarkXe
---------------%<-------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
double total3 = pow(10, 16) + 1 - pow(10, 16);
printf("pow(16) + 1 - pow(16) = %lfn", total3);
return EXIT_SUCCESS;
}
---------------%<-------------
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Merci d'avance.
ZarkXe
---------------%<-------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
double total3 = pow(10, 16) + 1 - pow(10, 16);
printf("pow(16) + 1 - pow(16) = %lfn", total3);
return EXIT_SUCCESS;
}
---------------%<-------------
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Pour éviter ce défaut, il vaut mieux réorganiser les équations pour
additionner/soustraire les termes par ordre de grandeur décroissante.
Pour éviter ce défaut, il vaut mieux réorganiser les équations pour
additionner/soustraire les termes par ordre de grandeur décroissante.
Pour éviter ce défaut, il vaut mieux réorganiser les équations pour
additionner/soustraire les termes par ordre de grandeur décroissante.
Le 14/10/2012 20:51, ZarkXe a écrit :Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Parce que le double n'a pas assez de précision pour représenter
exactement 10^16+1.
Le 14/10/2012 20:51, ZarkXe a écrit :
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Parce que le double n'a pas assez de précision pour représenter
exactement 10^16+1.
Le 14/10/2012 20:51, ZarkXe a écrit :Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Parce que le double n'a pas assez de précision pour représenter
exactement 10^16+1.
Le 14 octobre 2012, Samuel DEVULDER a écrit :Pour éviter ce défaut, il vaut mieux réorganiser les équations pour
additionner/soustraire les termes par ordre de grandeur décroissante.
À voir selon le cas. Dans un fil récent, il s'agissait de calculer la
somme des 1/k avec k entier. Si on commence par les plus gros (k
croissant), au bout d'un moment les additions ne font plus rien (les
termes deviennent individuellement négligeables).
Ce qu'il faut faire, me semble-t-il, c'est regrouper les termes de
grandeur comparable. Et se méfier des soustractions !
Le 14 octobre 2012, Samuel DEVULDER a écrit :
Pour éviter ce défaut, il vaut mieux réorganiser les équations pour
additionner/soustraire les termes par ordre de grandeur décroissante.
À voir selon le cas. Dans un fil récent, il s'agissait de calculer la
somme des 1/k avec k entier. Si on commence par les plus gros (k
croissant), au bout d'un moment les additions ne font plus rien (les
termes deviennent individuellement négligeables).
Ce qu'il faut faire, me semble-t-il, c'est regrouper les termes de
grandeur comparable. Et se méfier des soustractions !
Le 14 octobre 2012, Samuel DEVULDER a écrit :Pour éviter ce défaut, il vaut mieux réorganiser les équations pour
additionner/soustraire les termes par ordre de grandeur décroissante.
À voir selon le cas. Dans un fil récent, il s'agissait de calculer la
somme des 1/k avec k entier. Si on commence par les plus gros (k
croissant), au bout d'un moment les additions ne font plus rien (les
termes deviennent individuellement négligeables).
Ce qu'il faut faire, me semble-t-il, c'est regrouper les termes de
grandeur comparable. Et se méfier des soustractions !
Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Les propriétés des flottants font qu'ajouter 1 à une valeur aussi grande
que 10^16 n'aura vraisemblablement aucun effet (ni float ni double ne
sont assez précis).
Le problème peut être résolu de plusieurs manières :
1. Méthode brute : http://gmplib.org/
2. Méthode old-school : utiliser des entiers. Si besoin de fractions,
faire de la virgule fixe (fixed point). Imparable, mais pour des valeurs
de l'ordre de 10^16, 64 bits est un minimum.
3. Méthode hacker sûr de lui : isoler les calculs flottants sur des
petites valeurs et ceux sur des grandes valeurs. Après, le tout est de
définir petites et grandes valeurs. Et il vaut mieux avoir une très
bonne notion de ce qu'on fait.
Les propriétés des flottants font qu'ajouter 1 à une valeur aussi grande
que 10^16 n'aura vraisemblablement aucun effet (ni float ni double ne
sont assez précis).
Le problème peut être résolu de plusieurs manières :
1. Méthode brute : http://gmplib.org/
2. Méthode old-school : utiliser des entiers. Si besoin de fractions,
faire de la virgule fixe (fixed point). Imparable, mais pour des valeurs
de l'ordre de 10^16, 64 bits est un minimum.
3. Méthode hacker sûr de lui : isoler les calculs flottants sur des
petites valeurs et ceux sur des grandes valeurs. Après, le tout est de
définir petites et grandes valeurs. Et il vaut mieux avoir une très
bonne notion de ce qu'on fait.
Les propriétés des flottants font qu'ajouter 1 à une valeur aussi grande
que 10^16 n'aura vraisemblablement aucun effet (ni float ni double ne
sont assez précis).
Le problème peut être résolu de plusieurs manières :
1. Méthode brute : http://gmplib.org/
2. Méthode old-school : utiliser des entiers. Si besoin de fractions,
faire de la virgule fixe (fixed point). Imparable, mais pour des valeurs
de l'ordre de 10^16, 64 bits est un minimum.
3. Méthode hacker sûr de lui : isoler les calculs flottants sur des
petites valeurs et ceux sur des grandes valeurs. Après, le tout est de
définir petites et grandes valeurs. Et il vaut mieux avoir une très
bonne notion de ce qu'on fait.
On 10/14/2012 09:48 PM, Samuel DEVULDER wrote:Le 14/10/2012 20:51, ZarkXe a écrit :Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Parce que le double n'a pas assez de précision pour représenter
exactement 10^16+1.
Strictement parlant, il n'en a d'ailleurs même pas assez pour
représenter exactement 2 ;)
Les propriétés des flottants font qu'ajouter 1 à une valeur aussi grande
que 10^16 n'aura vraisemblablement aucun effet (ni float ni double ne
sont assez précis).
On 10/14/2012 09:48 PM, Samuel DEVULDER wrote:
Le 14/10/2012 20:51, ZarkXe a écrit :
Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Parce que le double n'a pas assez de précision pour représenter
exactement 10^16+1.
Strictement parlant, il n'en a d'ailleurs même pas assez pour
représenter exactement 2 ;)
Les propriétés des flottants font qu'ajouter 1 à une valeur aussi grande
que 10^16 n'aura vraisemblablement aucun effet (ni float ni double ne
sont assez précis).
On 10/14/2012 09:48 PM, Samuel DEVULDER wrote:Le 14/10/2012 20:51, ZarkXe a écrit :Bonjour à tous,
Je du mal a comprend pourquoi 10^16 + 1 - 10^16 = 0 ?
Parce que le double n'a pas assez de précision pour représenter
exactement 10^16+1.
Strictement parlant, il n'en a d'ailleurs même pas assez pour
représenter exactement 2 ;)
Les propriétés des flottants font qu'ajouter 1 à une valeur aussi grande
que 10^16 n'aura vraisemblablement aucun effet (ni float ni double ne
sont assez précis).
Marc Boyer écrivit :Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Et le rapport avec soit le langage C, soit l'analyse numérique est ?
Marc Boyer écrivit :
Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Et le rapport avec soit le langage C, soit l'analyse numérique est ?
Marc Boyer écrivit :Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Et le rapport avec soit le langage C, soit l'analyse numérique est ?
Le 15-10-2012, Antoine Leca a écrit :Marc Boyer écrivit :Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Et le rapport avec soit le langage C, soit l'analyse numérique est ?
Ben, que (x) et (x * (1-e)) + (x*e) ne sont pas garantis comme égaux
en flottant, même pour des valeurs asez "assez peu" de chiffres
significatifs (une TVA, c'est 4 chiffres significatifs et une facture
chez le commun des mortel dépasse rarement les 10 chiffres).
Le 15-10-2012, Antoine Leca <root@localhost.invalid> a écrit :
Marc Boyer écrivit :
Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Et le rapport avec soit le langage C, soit l'analyse numérique est ?
Ben, que (x) et (x * (1-e)) + (x*e) ne sont pas garantis comme égaux
en flottant, même pour des valeurs asez "assez peu" de chiffres
significatifs (une TVA, c'est 4 chiffres significatifs et une facture
chez le commun des mortel dépasse rarement les 10 chiffres).
Le 15-10-2012, Antoine Leca a écrit :Marc Boyer écrivit :Faut surtout garder en tête que l'analyse numérique est un job
à part, [...] ça devient sérieux, il faut faire très attention.
On rapporte toujours l'exemple d'un logiciel de compta
dont les sommes HT + TVA != TTC.
Et le rapport avec soit le langage C, soit l'analyse numérique est ?
Ben, que (x) et (x * (1-e)) + (x*e) ne sont pas garantis comme égaux
en flottant, même pour des valeurs asez "assez peu" de chiffres
significatifs (une TVA, c'est 4 chiffres significatifs et une facture
chez le commun des mortel dépasse rarement les 10 chiffres).