En Java je lance:Prendre logarithmes des nombres relativement petites dans différentes langues/architectures/systèmes d'exploitation
System.out.println(Math.log(249.0/251.0));
Sortie: -0,008000042667076265
En C# je lance: < - fixe
Math.Log (x/y); \\where x, y are almost assuredly 249.0 and 251.0 respectively
Sortie: -0,175281838 (imprimé plus tard dans le programme)
Google affirme:
Log(249.0/251.0)
Sortie: -0,00347437439
Et prétend MacOS la même chose (la La première différence entre google et Snow Leopard est d'environ 10^-8, ce qui est négligeable.
Y a-t-il une raison quelconque pour que ces résultats varient autant ou est-ce que quelque chose me manque? (J'ai vérifié que Java et C# utilisent tous deux la base e). Même des valeurs légèrement différentes de e ne semblent pas expliquer une si grande différence. Aucune suggestion?
EDIT:
Vérification sur Wolfram Alpha semble suggérer que Java est juste (ou que Wolfram Alpha utilise Java Math pour les logarithmes ...) et que mon programme C# ne pas la bonne entrée, mais je Je suis peu enclin à croire cela parce que prendre (e^(google result) - 249/251) me donne une erreur de 0,0044 qui est assez gros à mon avis, suggérant qu'il y a un problème différent à portée de main ...
Je suppose que l'exemple C# devrait lire Math.Log (x/y)? Sinon, vous obtenez le logarithme de x avec une base de y (au lieu du logarithme de x/y avec une base de e). –
@Wildenberg vous avez raison, merci. –
Google renvoie un journal de base 10 donc il devrait être 10^(résultat google), pas e^(résultat google). Recherchez les erreurs dans votre pensée, pas dans le code de l'autre;) – Guillaume