#include <iostream>
using namespace std;
int main() {
int steps=1000000000;
float s = 0;
for (int i=1;i<(steps+1);i++){
s += (i/2.0) ;
}
cout << s << endl;
}
Déclarer s
como float
: 9.0072e+15
Déclarer s
como double
2.5e+17 (même résultat que l'implémentation en Julia)
Je comprends double
a une double précision que float
mais float
devrait toujours gérer les nombres jusqu'à 10^38.
J'ai lu des sujets similaires où les résultats n'étaient pas les mêmes, mais dans ces cas-là les différences étaient très faibles, ici la différence est de 25x.
J'ajoute également qu'en utilisant long double
au lieu de cela me donne le même résultat que double
. Si la matière est la précision, je me serais attendu à avoir quelque chose d'un peu différent.