【发布时间】:2011-10-24 07:50:06
【问题描述】:
对于以下代码(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
【问题讨论】:
-
不是一个愚蠢的问题;这个问题提出了一些关于浮点运算和整数“可恢复性”的微妙问题。
-
这个网站最近有很多浮点问题 - 嗯...
标签: java floating-point double int rounding