首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Math.exp()和Python math.exp()

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

Stack Overflow用户
提问于 2017-03-23 22:30:13
回答 1查看 552关注 0票数 1

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

代码语言:javascript
复制
from math import exp

window = 10000
td = 1

print exp(-td/window)

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

代码语言:javascript
复制
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));
    }
}

我可以发誓这些都是等价物,但显然不是。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-23 22:35:17

python示例执行整数除法:

代码语言:javascript
复制
print -td/window

显示-1。请注意,如果您使用int变量用Java编写了等价的代码,则这与 is zero不同。

代码语言:javascript
复制
int window = 10000;
int td = 1;
System.out.println(-td/window);

显示0

Python的行为让我感到惊讶,因为我从未注意到Python always rounds down,而不是我从未看过的!

但是,在Java中没有完全相同的操作,您已经划分了两个double,这意味着您正在进行浮点除法。

在python中,尝试将td转换为浮点数:

代码语言:javascript
复制
print -float(td)/window

显示-0.0001,它类似于使用double的Java。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42988168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档