java - 在 Java 中从 double 到 int 的转换是如何工作的?

标签 java floating-point double int rounding

对于以下代码(Java):

double d = (double) m / n; //m and n are integers, n>0
int i = (int) (d * n);

i == m

最后一个表达式总是为真吗? 如果不是,这总是正确的吗?:

i = (int) Math.round(d * n);

i == m

最佳答案

int i = (int) (d * n); i == m;

对于 m=1,n=49,这是错误的。

i = (int) Math.round(d * n); i == m;

我的直觉告诉我这应该是真的,但可能很难严格证明。

关于java - 在 Java 中从 double 到 int 的转换是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015333/

相关文章:

c++ - 为什么 std::round(sin(pi/6)) 不等于 1?

c# - 将 double 日期和时间值转换为另一个时区?

Java IEEE 64 位 754 double,要避免的值

java - Maven : Unable to get Property Value from Proprties file

java - Java中敌人追赶玩家的二维数组

java - 正则表达式:简单的 Java 正则表达式问题

c - Scanf for double 在 Dev C++ 中不起作用

java - 如何从 pom.xml 配置 Jetty 默认 servlet? (初始化参数 useFileMappedBuffer)

math - float 学有问题吗?

Python: float 或 double