Java Math.exp() 和 Python math.exp()
Java Math.exp() and 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
转换为浮点数:
print -float(td)/window
显示 -0.0001
,这类似于 Java,您在其中使用 double
。
我不太了解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
转换为浮点数:
print -float(td)/window
显示 -0.0001
,这类似于 Java,您在其中使用 double
。