四舍五入 double 到 int 总是到较小的
Rounding double to int always to the smaller
我想在 java 中将 double 值转换为 int 值。我遇到的问题是简单的转换无法按我的意愿工作,而且 Math.round() 也没有做到。
我的目标是双精度数应该向下舍入到下一个更小的整数。如下:
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;
使用
double d = ...
int n = (int)Math.floor(d);
我想在 java 中将 double 值转换为 int 值。我遇到的问题是简单的转换无法按我的意愿工作,而且 Math.round() 也没有做到。
我的目标是双精度数应该向下舍入到下一个更小的整数。如下:
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;
使用
double d = ...
int n = (int)Math.floor(d);