Java Math.exp() 和 Python math.exp()

标签 java python math exp

我不太了解 Python,但下面的代码片段结果是 0.367879441171

from math import exp

window = 10000
td = 1

print exp(-td/window)

而在 Java 中,下面的代码片段导致 0.9999000049998333

import java.time.Clock;
import java.time.Duration;
import java.time.Instant;

public class HelloWorld{
    public static void main(String []args){
        double td = 1d;
        double window = 10000d;

        System.out.println(Math.exp(- td / window));
    }
}

我可以发誓它们是等效的,但它们显然不是。我做错了什么?

最佳答案

python 示例正在执行整数除法:

print -td/window

显示-1。请注意,这与使用 int 变量在 Java 中编写的等效内容不同,因为 -1/10000 is zero :

int window = 10000;
int td = 1;
System.out.println(-td/window);

显示 0

Python 的行为让我感到惊讶,因为我从来没有注意到 Python always rounds down ,虽然我从未看过!

但在 Java 中您没有做完全相同的事情,您划分了两个 double,这意味着您正在进行浮点除法。

在 python 中,尝试将 td 转换为 float :

print -float(td)/window

显示 -0.0001,这类似于 Java,您在其中使用 double

关于Java Math.exp() 和 Python math.exp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42988168/

相关文章:

python - 将灰度图像转换回矢量

python - 使用 hstack 时矩阵格式错误?

python - Amazon.com 返回状态 503

c++ - 如何将无限长度的二进制转换为十进制

python - matplotlib 中的自相关和 pandas.tools.plotting 中的自相关有什么区别?

java - 基于 WEB 的应用程序与桌面集成 - 技术?

java - 管理内存中非常大的 xml

Java 银行程序。如何让客户拥有多个账户?

java - Spring Data Neo4j 4.0 : Duplicate nodes created, 应该创建关系

algorithm - 如何编写程序来绘制这样的平铺图片?