Java 将 double 类型转换为 int 类型的标准

Java Standard On Result Of Casting A Double To An Int

假设我有以下...

double d = 1.6;
int q = ( ( int ) d );

根据Java标准,这将始终保留小数点,还是可以根据标准向上或向下舍入(哪个或多或少存在)?

是的,它会去掉小数点。这意味着它将 向零舍入 ,因此如果它是正数,它会向下舍入,但如果它是负数,它会向上舍入。

参见 JLS 中的 §5.1.3

Otherwise, if the floating-point number is not an infinity, the floating-point value is rounded to an integer value V, rounding toward zero using IEEE 754 round-toward-zero mode (§4.2.3).

double 转换为 int 总是将值降低到小于它的最大整数,但试试这个:

int q = (int) Math.round(d); // rounded instead of floored