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
假设我有以下...
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