Rit*_*ose 0 c# java floating-accuracy
在Java中我运行:
System.out.println(Math.log(249.0/251.0));
Run Code Online (Sandbox Code Playgroud)
输出:-0.008000042667076265
在C#中我运行:< - 修复
Math.Log (x/y); \\where x, y are almost assuredly 249.0 and 251.0 respectively
Run Code Online (Sandbox Code Playgroud)
输出:-0.175281838(在程序后面打印出来)
谷歌声称:
Log(249.0/251.0)
Run Code Online (Sandbox Code Playgroud)
输出:-0.00347437439
MacOS声称同样的事情(谷歌与Snow Leopard之间的第一个区别是大约10 ^ -8,这可以忽略不计.
是否有任何理由认为这些结果应该如此广泛地变化,或者我错过了一些非常明显的结果?(我确实检查过java和C#都使用了基数e).即使是略微不同的e值似乎也不能解释如此大的差异.有什么建议?
编辑:
在Wolfram Alpha上进行验证似乎表明Java是正确的(或者Wolfram Alpha使用Java Math作为对数...)并且我的C#程序没有正确的输入,但我不愿意相信这一点因为考虑(e ^ (谷歌结果) - 249/251)给我一个0.0044的误差,这在我看来相当大,暗示手头有一个不同的问题......
你正在寻找具有不同基数的对数:
System.out.println(Math.log(249.0/251.0));是一个自然日志(基础e)Math.Log (x,y);给出了x指定基数的日志yLog(249.0/251.0)给出了日志库10虽然我没有从C#(Math.Log( 249.0, 251.0) == 0.998552147171426)获得结果.
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |