舍入double到int总是更小

时间:2016-01-10 12:08:41

标签: java int double rounding

我想在java中将double值转换为int值。我遇到的问题是,简单的转换并不能按照我的意愿工作,Math.round()也不会这样做。

我的目标是双打应该向下舍入到下一个较小的int。如下:

 0.5 ->  0
 1.7 ->  1
 2.9 ->  2
-0.3 -> -1
-3.9 -> -4

问题主要是小于0的不同处理方法。因为我不希望它们四舍五入到更高的值,但是更低的值。

是否有java-native函数,或者我如何有效地实现它?我想到了以下内容,但我宁愿使用java-native函数。

double d = -0.1D; // or whatever else
int i = (double) ((int) d) <= d ? (int) d : (int) d - 1;

1 个答案:

答案 0 :(得分:2)

使用

double d = ...
int n = (int)Math.floor(d);