0

将 double 类型转换为 int 后遵循以下哪种舍入模式?

使用给定的舍入模式将输入舍入到一位数的结果

Input                                                   HALF_EVEN
Number  UP      DOWN    CEILING FLOOR   HALF_UP HALF_DOWN       UNNECESSARY
5.5     6       5       6       5       6       5       6       throw ArithmeticException
2.5     3       2       3       2       3       2       2       throw ArithmeticException
1.6     2       1       2       1       2       2       2       throw ArithmeticException
1.1     2       1       2       1       1       1       1       throw ArithmeticException
1.0     1       1       1       1       1       1       1       1
-1.0    -1      -1      -1      -1      -1      -1      -1      -1
-1.1    -2      -1      -1      -2      -1      -1      -1      throw ArithmeticException
-1.6    -2      -1      -1      -2      -2      -2      -2      throw ArithmeticException
-2.5    -3      -2      -2      -3      -3      -2      -2      throw ArithmeticException
-5.5    -6      -5      -5      -6      -6      -5      -6      throw ArithmeticException

我知道它与我引用的枚举类型的转换原语无关,但是该表肯定涵盖了将 double 类型转换为 int 的方式。清单中的哪一项做到了这一点?提前致谢。

4

1 回答 1

3

将 double 类型转换为 int 后遵循以下哪种舍入模式?

它只是截断为零-由DOWN您的问题中令人困惑的名称表示。

JLS 的第 5.1.3 节

浮点数到整数类型 T 的窄化转换需要两个步骤:

在第一步中,浮点数要么转换为 a long, if Tis long ,要么转换为int, if Tis byte, short, char, or int,如下所示:

  • 如果浮点数是 NaN(第 4.2.3 节),则转换第一步的结果是 int 或 long 0。

  • 否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值 V,使用 IEEE 754 向零舍入模式(第 4.2.3 节)向零舍入。那么有两种情况:

[ ... ]

(其余的与问题无关。)

于 2013-09-12T13:17:37.043 回答