-
Problème de précision
Les valeurs changes pas a chaque fois. Vous comprendrais mieux avec le code.
Voici mon code:
for (int i = 1; i <= 100; i++)
{
double a =(20*Math.log10((1/(Math.sqrt(1+(i/5))))));
System.out.println("gain= "+a);
}
Ce qui donne:
gain= 0.0
gain= 0.0
gain= 0.0
gain= 0.0
gain= 0.0
gain= 0.0
gain= 0.0
gain= 0.0
gain= 0.0
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -3.0102999566398125
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -4.771212547196623
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.020599913279624
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -6.989700043360188
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -7.781512503836435
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -8.45098040014257
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.030899869919436
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -9.542425094393248
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.0
gain= -10.41392685158225
-
Je me suis aperçu de mon erreur, j'avais oublier de castre la valeur de i!
Désoler pour la question inutile!
-
Ce n'est pas tellement une question de précision.
Dans i/5, i est un int, 5 est un int, donc 1/5 est la division entière et renvoie un int.
0/5 = 0
1/5 = 0
2/5 = 0
3/5 = 0
4/5 = 0
5/5 = 1
etc.
mets un d après 5 pour dire que c'est un double, et tu passeras à la division flottante double précision :
Edit : oui, voilà. Personnellement je préfère transformer la constante en double, mais bon.