gpt4 book ai didi

c# - 对不同语言/体系结构/操作系统中相对较小的数字取对数

转载 作者:行者123 更新时间:2023-12-01 06:48:08 27 4
gpt4 key购买 nike

在 Java 中我运行:

System.out.println(Math.log(249.0/251.0));

Output: -0.008000042667076265

在 C# 中我运行:<- 已修复

Math.Log (x/y); \\where x, y are almost assuredly 249.0 and 251.0 respectively

Output: -0.175281838 (printed out later in the program)

Google 声明:

Log(249.0/251.0)

Output: -0.00347437439

MacOS 也声称有同样的事情(Google 和 Snow Leopard 之间的第一个差异约为 10^-8,可以忽略不计。

是否有任何原因导致这些结果差异如此之大,或者我是否遗漏了一些非常明显的东西? (我确实检查过 java 和 C# 都使用基数 e)。即使 e 值略有不同,似乎也无法解释如此大的差异。有什么建议吗?

编辑:

在 Wolfram Alpha 上验证似乎表明 Java 是正确的(或者 Wolfram Alpha 使用 Java Math 计算对数...)并且我的 C# 程序没有正确的输入,但我不愿意相信这一点,因为(e^(google result) - 249/251) 给我一个 0.0044 的错误,在我看来这是相当大的,表明手头有一个不同的问题......

最佳答案

您正在查看具有不同底数的对数:

  • Java 的 System.out.println(Math.log(249.0/251.0)); 是自然对数(以 e 为底)
  • C# 的 Math.Log (x,y); 给出 x 的对数,基数由 y 指定
  • Google 的 Log(249.0/251.0) 给出的对数底数为 10

虽然我没有得到你从 C# 得到的结果 (Math.Log( 249.0, 251.0) == 0.998552147171426)。

关于c# - 对不同语言/体系结构/操作系统中相对较小的数字取对数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com