我对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));
}
}我可以发誓这些都是等价物,但显然不是。我做错了什么?
发布于 2017-03-23 22:35:17
python示例执行整数除法:
print -td/window显示-1。请注意,如果您使用int变量用Java编写了等价的代码,则这与 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,它类似于使用double的Java。
https://stackoverflow.com/questions/42988168
复制相似问题