在Java中我运行:
System.out.println(Math.log(249.0/251.0));
输出:-0.008000042667076265
在 C# 中,我运行:<- 已修复
Math.Log (x/y); \\where x, y are almost assuredly 249.0 and 251.0 respectively
输出:-0.175281838(稍后在程序中打印)
谷歌声称:
Log(249.0/251.0)
输出:-0.00347437439
MacOS 声称同样的事情(google 和 Snow Leopard 之间的第一个差异大约是 10^-8,可以忽略不计。
有什么理由让这些结果变化如此之大,还是我遗漏了一些非常明显的东西?(我确实检查了 java 和 C# 都使用 base e)。即使是轻微不同的 e 值似乎也无法解释如此大的差异。有什么建议么?
编辑:
在 Wolfram Alpha 上进行验证似乎表明 Java 是正确的(或者 Wolfram Alpha 使用 Java Math 进行对数...)并且我的 C# 程序没有正确的输入,但我不愿意相信这一点,因为采用 (e^ (谷歌结果) - 249/251)给了我一个 0.0044 的错误,在我看来这是相当大的,这表明手头有一个不同的问题......